Fix DataBlock overflows

Summary: The relocation code was bypassing runtime checks for overflowing
DataBlocks in opt builds (there was still an assert for dbg builds). This
rewrites it to relocate into a DataBlock instead of into a range of memory.

Reviewed By: @ottoni

Differential Revision: D1415998