Lock the available list when opening a block checkpoint

I don't think this is correct - we don't actually want the handle exclusive, but if I don't set exclusive I hit an assert.

This change also isn't enough on it's own to fix the bug in #1102. We'd need a similar change in ```__checkpoint_apply``` as well - it's not obvious how to pass that down.