I'm a little wary of how you're removing movieClips:
Try this:
ActionScript Code:
trace("line1");
_root.createEmptyMovieClip("identifier", this.getDepth());
trace("line2");
identifier.removeMovieClip();
You will notice that the "line2" trace is never executed, so neither is the identifier.removeMovieClip() and you will end up with a whole bunch of empty movieclips before too long. And that will bog you down.
I can't quickly explain what I would have done to remove that, because I would have structured the whole program differently, and would have had an array of asteroids, an array of lasers, etc. And then I'd loop through those arrays when I decide which ones need to be deleted. And like Fitz, I do games in AS3 now, so I don't remember if there's any getMovieClipAtDepth or something in AS2.