ProcessGetData: fix corrupt block message when requested block is missing on disk

This is a fix for #3957.

Patch behaviour: if a peer requests a block which is in the block index, but the block file (blk*.dat) is missing, an error is logged to debug.log and no response is sent to the peer.

Buggy behaviour: without this patch, an invalid 'block' message is sent which contains null bytes.

Should anything further be done in response to this issue?  Perhaps re-request the block from peers?  Something else?