That's because each object still has to perform checks against the frustum and updates each frame, even if its not rendered. every Q3D Model introduces a CPU cost, you can't compare the performance to something like a sprite in C2, 10,000 unique objects existing simultaneously is a lot in 3D. If you're trying to do something like minecraft Q3DModel isn't going to work, there's particular optimizations needed to get something like that with so many "blocks" to perform properly, which can't easily be done in Q3D, they aren't equivalent to something like Q3D model. It requires a special system built from the ground up just for that, using octrees and optimized raycasts to carefully prune and display only whats necessary.
Even around 500 Q3D models on screen at once on a normal system is pushing it. You could have really complicated geometry which has millions of triangles perform better in a single model, than you could have a 100th as many spread across 500 objects because the program will be CPU bound because of all the transforms it'll have to do. Q3D is optimized, so I can't really improve the performance, this is just the way things are. Eventually i'll have particle objects perhaps for stuff like smoke, but there can never be 10000s of unique objects, even modern games don't have this. Stuff is batched together, without unique transforms. Something like minecraft would require a custom plugin for stuff just like that.