blockfinder refactor

don't merge this, it won't work out of the box.

this is just my idea of how to refactor block finder.

the `findBlockAsync2` is just an example, I don't expect that to actually be used.