Implement recursive indirect block creation for DAGs

Also cleaned up a bunch of code related to building and reading DAGs
maybe use `level` or `depth` in both places? having level here and depth in `fillNodeRec` may be confusing? i like both.