I was facing a couple of choices (and couldn't find a 3rd):
1. Restart the iterator each time to sweep starting at the beginning
2. Keep the iterator and "miss" siblings that were reshuffled behind the iterator

Choice 1 meant that it was possible to never sweep siblings near the end of the hash array.
Choice 2 meant a delay in sweeping siblings, but catching them (probably) in the next sweep.