The problem is that your sphere geometry is way too complex. If you define it like so, the performance is much better.
var geometry = new THREE.SphereBufferGeometry( 10, 32, 32 );
Representing your geometry just as a THREE.Sphere will further increase the performance.
Besides, you should avoid object creation in code which is called from your animation loop. So define objects like posLabel or posCam once and reuse them in checkPointVisible(). Moreover, a for loop is better than foreach since you avoid the creation of an anonymous function per execution.
I searching for a long time - maybe there is some other way to determine whether the object is visible or not.
Big size model working fast without check visibility: https://jsfiddle.net/vasilii/xyvq4uLk/3/
But not find. I will disable labels for large models.