This is a feature request, which I'm willing to code myself, but wanting to solicit opinion on it first. What do people think about storing the orphan blocks downloaded to disk so that the blocks don't need to be re-requested if bitcoind is shutdown and started again? Currently, due to the way blocks are requested, I am often seeing the number of orphan blocks reaching 300 or so, so it seems pretty wasteful that these are discarded when bitcoin is shutdown and restarted.
Perhaps this is fixing the problem in the wrong place. I would prefer to see the blocks downloaded in a way that prioritises the earlier blocks so that orphans don't stack up as they currently are doing.