Okay, the attached patch file makes several changes.
1. Changes the SurfaceSet like my previous file uploads
2. Buffers the globe in _world
3. New drawWorld() method, only called when rotating or zooming
4. Reduced loop count in drawWorld() (was from draw())
This has sped things up q bit, and when not rotating, plays very nicely.
Rotating and zooming still locks up for about 3-5 tenths of a second.
Interestingly, if you comment out the following lines
if( !backFace )
texturedPolygon(_world->getSurface(), (Sint16*)&x, (Sint16*)&y, (*i)->getPoints(), _texture->getFrame((*i)->getTexture())->getSurface(), 0, 0);
Whilst you can't see the land, it rotates rapidly... your bottleneck must be here
Edit: Interestingly, if you leave drawWorld() alone, and comment out the draw() line:
SDL_BlitSurface( _world->getSurface(), ©Rct, this->getSurface(), ©Rct );
Again, it doesn't draw the world (at least to the screen, but it is blitting the textured polygons), and it's fast again... There must be something...