GetBlocks attempts to resolve the block corresponding to the supplied CID.
It relies on ctx to time-out or cancel. The block received by the client
is transparently verified against the supplied key, and blocks.ErrWrongHash
is returned if these do not match.