Instead of unsorting your list of URLs, why not grouping them by domain, each in a queue, then process them asynchronously with a delay (randomised?) in between?
It looks to me less complex than what you’re trying to do to achieve the same thing and if you have a lot of domain, you can always throttle the number to run through concurrently at that point.