Process one streamed stage-1 row in the merged ancestor walk.
The cursor returns (cid, parent_cid, type, blob) rows in
checkpoint_id DESC order starting at target. The first row is
target itself; we read its parent_cid to seed the walk and otherwise
skip it (target's own writes/seed are not part of the contract).
For each subsequent row, if cid matches the walk's current
position, we deserialize the blob, append the cid to every
not-yet-seeded channel's chain, and check channel_values for
seeds. The deserialized checkpoint is dropped before advancing — no
cross-row cache, so peak in-flight is one deserialized checkpoint.
Off-path rows (different branch on the same thread) advance the cursor without doing any work.
Returns True when every requested channel is seeded — the caller can stop iterating and close the cursor.