A few thousand text meshes all visible at the same time? You could merge text meshes into the static sprite batcher, but the API isn't "public" and its likely to change. Its not exactly "user friendly" either. It may sound like I'm dissuading you from doing this, and thats because the you'll be relying on non public interfaces which are likely to change in future versions.
Also, the static sprite batchers aren't particularly optimized for frame by frame manipulation, so be careful in working with it - you could end up with a completely different set of bottlenecks after you've done this.
One thing you could do to get an almost immediate gain now, is to set the maxChars on the text mesh to 1. Since you're only creating textmeshes with one character, this should improve things greatly.