Use the number of items scanned to control the duration of the shrink
loop. Otherwise, if a consumer like TTM is not able to free the number
of items requested, we'll just keep looping. This more closely matches
the behaviour of the out-of-tree implementation.
I'm not sure that it makes sense to scan until we've visited roughly
every object in the pool, but this at least fixes some nasty hangs I'm
seeing with amdgpu when the system runs out of free pages.