Finish checkpoint locking: gather data handles in the first pass, then walk the list in subsequent passes to apply the checkpoint.