Rework hazard pointer coupling during cursor walks to be more efficient.

Michael, here is the change I mentioned, it passes the test suite and runs test/format.

It appears to reduce the number of hazard references required for cursor traversal by about 50% (which should have a positive impact on checkpoints, not just cursor operations).