Eu tropecei em um caso de uso semelhante, não tenho certeza se ele atenderá às necessidades mencionadas acima, mas Clusteringno 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, 4mas como pontos individuais de um zoom de digamos diga 10que o que você pode fazer é quando o zoom é que 4você 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