Optimise `UpdateBuildQueueService`
This service processes all runners that are assigned to project, even the ones that are considered offline (did not connect for more than some deadline).
For some customers, that register runners frequently, and runner manager fails to unregister this ends-up in having a thousands of runners assigned to project and group. In such cases only a few runners are connected at given time, like 10-30.
This is waste compute with quite extensive memory usage and very bad performance.