Labeling a limited number of points on the screen
Aggregate your data, the setting is in 2D, the number of points is small for clustering, and it will solve the task.

You can use k-means, where $k$ will denote number of labels shown on the screen. Putting labels in place of centroids will with high probability give you good place for labels. If this is not good enough you can refine the placement using iterative method on selected labels by treating them as springs with constraint on minimal distance or solving NLP (Natural Label Placement).

Alternatively you can use dbscan algorithm with $\epsilon$ greater than the size of maximal label, this will give you advantage with no refinement needed but in return you lose control over number of labels displayed.

For more in-depth analysis I recommend the doctoral dissertation Automated Label Placement in Theory and Practice by Alexander Wolff.

There are other approaches like Unaligned Collision Avoidance or simulation by flock where the avoiding/pushing is set greater than labels size. This unfortunately will need more tweaking.