What I do in the virsues is use a random approach, so pick "one of possible tiles", "process this order" should have the same consume that is sort of 0.030 millisecons, aren't much but are something, anyway the problem of second point is less relevant than the first one, u don't know how much is heavy call in the game the function "find_for_entities_filtered(...)"; on a small area take a sort of 0.010-0.050 milliseconds, on a medium area 0.050-0.100, on a big 0.300-0.500, so is not difficult have a map with 30'000 where something like 5'000+ have nests inside, imagine the best case where: use 0.010*5'000 each... 60 tick(1 second)? Or 120 tick? Think about that game start lag a bit when a mod use 2.000 milliseconds...
If u are able to show me an implementation that is very light, I will think about add it, for know I see only much lag in the end game = blame on me.