A batch read takes the oldest twenty open rows, but skips the ones it cannot settle without closing them. Twenty stuck rows then fill every batch, and every newer row waits forever behind them.
Select only rows the loop will move. A row that stays put after the pass holds its slot in every later batch.