Hi Nick,
First check and see what you are doing with the actions associated with the entities, as Marco correctly suggested.
Next do you have collision turned on for all the objects?
Are the all the entities casting shadows?
There are things done by your computers CPU, that can effect frame rates. Collision testing, culling, just traversing the draw list.
Each entity needs to be looked at by the render to determine if it should be drawn or not. Just travesing a 500 to 1500 item list will slow things down. Level geometry uses a BSP system which allows the render to skip large groups of items that may not need to be rendered in the scene. Entites do not have this advantage. Marco can correct me if I am wrong, Octree culling is in development.
Figure, for each Frame, the CPU is going to hit each entitie and if it has an action hit that also, if collisions are turned on, then collision testing takes place each frame, if you are casting a shadow, then a shadow map needs to be created and rendered, each frame, etc.
You may want to combine entities, or create some logic that activates only the needed entities and disables the ones not needed in a scene.
GPU's are really great for pushing polys, and other graphics stuff, but if the CPU can not get the data to the GPU fast enough then, its just wasted GPU bandwidth.
I would seriously consider lowering your number of entities, in some clever way.
Ken