How to render multiple (say 1000) overlapping objects seperately (one per frame)? I am quite new to Blender and thanks for your help.

I need to render multiple .stl files (say 1000) by timeline (one per frame) generated from a third party software, which are basically calculated tsunami meshes. They need to be shown only one for each frame with city/environment created in Blender to compose a decent coming tsunami scene.

I have read some threads talking about rendering objects individually using ID Mask, whereas they seem to be limited to non-overlapping objects. And only objects with the same Index of the frame would be rendered, but what about the background (houses/trees/roads...), which need to be rendered for all frames? It might also be annoying to set Pass Index for tons of objects correctly by hand.

How to render individual objects (one per frame)

How to output ID masks as seperate files for compositing?

The other thread talking about key-framing the visibility for objects might help, but I don't think it is a good idea to go through the 1000 objects and do this one by one with unbelievable time consuming and high mistake risk, except for using scripts though.

How to make an object invisible at a particular keyframe without moving it in Blender (2.59)?

Is there another way to do this automatically in a cleverer way, or some scripting idea?

===========

P.S. I managed to render similar scene using CINEMA4D before and found a way out using Python to toggle with each object's visibility. 

How to script the Render_Visibility for a sequence of objects?

Now I am asked to test in Blender, so...Any ideas?
Based on a previous answer I would use a script that imports each stl file and keyframes the visibility as it goes.

import bpy
scn = bpy.context.scene
for f in range(scn.frame_start, scn.frame_end):
    fpath = bpy.path.abspath('//sim_data_{}.stl'.format(f))
    bpy.ops.import_mesh.stl(filepath=fpath)
    obj = bpy.context.active_object
    # key as visible on the current frame
    obj.keyframe_insert('hide',frame=f)
    obj.keyframe_insert('hide_render',frame=f)
    # hide it
    obj.hide = True
    obj.hide_render = True
    # key as hidden on the previous frame
    obj.keyframe_insert('hide',frame=f-1)
    obj.keyframe_insert('hide_render',frame=f-1)
    # key as hidden on the next frame
    obj.keyframe_insert('hide',frame=f+1)
    obj.keyframe_insert('hide_render',frame=f+1)