Even you want to verify all blocks in the chain, can this be a two step process -- download all blocks concurrently first, and then verify the chain afterward? Just wondering.
Exactly. 300MB takes a few hours, no matter how fast your connection because it is p2p, but not torrent like.
However, if you download just the headers first (80 *130k = 10MB), you can at least verify that the blocks you get are real.
All nodes, including client nodes, would likely have the headers so you could p2p them too.
The main point is to download the chain itself from the last block and work backwards. For most people, they will only need blocks from the last few weeks anyway.