When two transactions in a compact block share the same 6-byte short ID, InitData() currently returns READ_STATUS_FAILED, abandoning reconstruction entirely and falling back to a full block download.
This is unnecessarily broad. A collision only means those specific positions are ambiguous - the rest of the compact block is still usable.
This PR marks collided short IDs with a sentinel value instead of failing. Ambiguous entries are skipped during mempool/extra_txn matching and left as unavailable in txn_available, so they flow naturally into the existing getblocktxn request path. Only the collided transactions are fetched; the compact block fast path is preserved for everything else.
Safety is unchanged: ambiguous positions are never guessed, and reconstructed blocks are still validated for merkle mutation before acceptance.