Eu tropecei em um caso de uso semelhante, não tenho certeza se ele atenderá às necessidades mencionadas acima, mas Clustering
no OL 5 é o que eu adotei.
O agrupamento, como as palavras sugerem, pega um grupo de pontos e os mescla em um único ponto. Por exemplo, você tem 100 pontos em determinada cidade. Todos os pontos serão visíveis como um ponto de um zoom de digamos, 4
mas como pontos individuais de um zoom de digamos diga 10
que o que você pode fazer é quando o zoom é que 4
você pode unir esses pontos como um, o que isso ajuda a reduzir o número de pontos a serem renderizados em uma área específica.
Em outras palavras, digamos que você tenha 10.000 pontos a serem renderizados no mapa e eles estejam muito próximos um do outro, para que você possa criar agrupamentos deles e reduzir a renderização, e quando o usuário aproxima o zoom, você quebra os agrupamentos. Isso garantirá que você tenha menos renderização e melhor desempenho.
Satisfação no desempenho. Link para exemplos de cluster em Openlayers