Basically we want to make use of excess (wasted) CPU during download, as long as it doesn't cause thrashing due to low/slow RAM and/or slow SSD. Otherwise we want to wait for download currency and put everything into validation. Validation itself will not cause thrashing because it's around 99.9% read (it will read about 130% of the store, all txs and all prevouts) and .1% write (validation states). Also it may make sense to eliminate tx validation states for block validation, as the granularity is probably a net loss apart from pool txs, since we are concurrently validating at the block level. This would save a lot of the writing, which presently isn't ever getting read.