The reactions store dialed activeGateway() directly, so a reaction on a
secondary-profile session (or any session whose owner differs from the
foregrounded profile/connection — Bot-Mode tiles, post-reconnect
rehydration) hit a backend that never held the runtime and answered
4040 "message not found" even though the row existed in the owning
profile's state DB.
Route through requestForOwnedSession (tile route → owner hint →
connection-tagged row ladder, fail-closed), the same dispatcher every
other session-scoped RPC uses. The bound ambient request stays as the
legacy single-profile fallback, preserving the asserted call shape.
Diagnosed independently by emanogilbert-hash on #80670.
Refs #80670.