negotiate a target block size; try to hash enough rows to get between half and the full target block size, and when a hash fails to match don't subdivide any further if the data is already less than the target block size