Do each of the models need to be able to rotate and translate on their own? If so how do you intend on rendering them in a batch? The only way I'm aware this is possible is to use matrix transforms on the vertex data and that could be slow applying to that many vertices. If you use glRotate, glTranslate etc. you obviously can't do them all in a batch.
Also are you enabling GL_BLEND? This seems to be a big performance hit, if your models don't have alpha blending then disable it and make sure your model textures are 24 bit.
Are you using PVR texture compression? Are all your textures in one big texture atlas?
GL_TRIANGLE_STRIP is faster than GL_TRIANGLES but I don't see much of a performance hit for what you're doing. iPhone's main problem is alpha blending and fill rate. Of course the less texture and state changes the better.
The best way to find out where your bottle necks are is to profile your code. A simple way to do this is the following
Code:
NSDate *start, *stop;
NSTimeInterval duration;
start = [NSDate date];
// Do stuff
stop = [NSDate date];
duration = [stop timeIntervalSinceDate:start];
NSLog(@"Stuff: %f", duration);
There are also some great performance analysers in XCode (Run->Run with Performance Tool).