Actually check block headers received from peers. If a peer sends headers with invalid PoW, they were accepted and added to the disk block index previously. This would then lead to a failure in checking the PoW during the next startup while loading the block index.
This is a better version of #5269.