Have the eviction thread update the oldest transaction ID in the system before each walk: we now use that to filter LRU candidates, and if a long-running transaction such as a checkpoint blocks all other threads in the system, the oldest ID has to be updated after the long-running transaction completes.