OK, jorrit came into #planeshift-build and was answering some questions of Ragnarin about this:
<@jorrit> Best is to avoid SetRenderTarget.
<@jorrit> It is not needed for this.
<@jorrit> You put ALL entity labels in one single mesh.
<@jorrit> But I think this is the best solution. A few facts:
<@jorrit> - More meshes -> slower
<@jorrit> - Less materials -> faster
<@jorrit> - Render2Texture -> slow
<@jorrit> So a single mesh with a single material for entity labels -> fast
<@jorrit> Plus that the labels will even work when PS window is iconified.
<@jorrit> Currently that's not the case.
<@jorrit> Labels generated while PS window is obscured contain garbish.
(this is the reason planeshift is very slow to respond after switching back to it from another application, in windowed mode - all the entity labels are recreated)
I found it interesting... and the developers are working on it

As for "Create all the labels while the map is loading?" this is what currently happens, well, when the model appears... and is part of the major lag when entering a sector like hydlaa plaza...
"Or replace labels with a modified version of the chat bubbles system since chat bubbles aren’t even on the radar of recourses."
Hmm well, I probably wasn't very clear about what I meant, and thinking later probably why they did not show up in the callgrind.out was because there were around 50 entity labels, and only 5 or so chat bubbles probably... I will test properly later by making a npc talk a lot, and turn labels off and see if it runs the 'bad' part of the code or not... it may, as they are both coded in a similar way...