Implement recursive indirect block creation for DAGs

Also cleaned up a bunch of code related to building and reading DAGs
Argg, you're right. 32 bytes, 256 _bits_. though there's a few more bytes for sizes. roughly ~40 bytes with protobuf encoding overhead.