convey/chat: count redispatch hops through skip-through events
The previous back-walker broke early when chat_error or any other non-terminal event sat between counted sol_messages, defeating the loop cap. Rewrite as a single reverse pass that pairs each requested-target sol_message with the nearest earlier talent terminal event while skipping bookkeeping events.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>