Valid headers, and txs valid relative to the confirmed chain (neither have to be in a confirmed block), are stored once in the header table and tx table, never moved or purged. We download unpopulated candidate blocks in parallel when the candidate chain is stronger. Txs are stored in parallel when blocks arrive, then validated and confirmed in block order.