I hope I'm not thread-jacking here, apologies if so, but that's the approach I've taken with the node I'm working on.
Headers can be downloaded and stored in any order, it'll make sense of what the winning chain is. Blocks don't need to be downloaded in any particular order and they don't need to be saved to disk, the UTXO is fully self-contained. That way the concern of storing blocks for seeding (or not) is wholly separated from syncing the UTXO. This allows me to do the initial blockchain sync in ~6 hours when I use my SSD. I only need enough disk space to store the UTXO, and then whatever amount of block data the user would want to store for the health of the network.
This project is a bitcoin learning exercise for me, so I can only hope I don't have any critical design flaws in there. :)