A mi me ha pasado que en la prueba del scroll tileado, el cubrir parte de la ventana con otra aumentaba la velocidad, llegando a quintuplicarla.
Pero supongo que es normal.
Además, hace tiempo me leí el método de render y, sí, vale para todo y es muy reutilizable, pero se ejecutaba una vez por cada elemento dibujable en pantalla. Yo no creo que sepa hacerlo mejor, desde luego, pero quizás sí que habría que darle una vuelta para ver si se podría hacer de otra forma, no sé, ¿recolocar y ordenar los elementos y, después, pintarlos de una en el sdl_surface?
Pero vamos, Splinter, que si estás usando SDL con las distintas superficies, y dejando que sea SDL quien haga el render, seguramente se note una mejora notable (vamos, digo yo).