This refactor is part of larger work I'm doing for faster block relay. It was inspired by noticing that mapBlockSource is redundant with mapBlocksInFlight -- mapBlocksInFlight already contains a mapping from blockhash to peer id.
mapBlockSource was used to DoS-ban peers that send us bad blocks, but the banning logic was sometimes broken-- InvalidBlockFound could DoS ban, and then another ban for the same bad block would be applied in ProcessMessages. Just removing mapBlockSource is the simplest fix.
There is a corner case where a peer might have been banned before, but will not get banned now: if we get an out-of-order block from a peer that double-spends an output spent in a previous block that we don't yet have. The requirement that the block have valid proof-of-work prevents this from being a practical DoS attack.
ProcessNewBlock loses it's *pfrom argument, which is nice-- ProcessNewBlock shouldn't care about networking stuff.