That's largely what I'm proposing, though: Don't scan everything each time. Instead, scan only one cell each time.
It doesn't make for less computation, true, but it at least breaks it up so there shouldn't be noticable jank if somebody (e.g. me) needs a complete list of ghosts (limit=0). The scan for all cells on a network still has to be done in one piece but it doesn't have to be done with every piecemeal update of the ghosts.
Since I have independent networks per city block, the scan for cells is not a problem -- it's the scan for ghosts that causes the jank and that can be limited to one cell per update.