You're not using c_move between all those enemies, are you? There are cheaper ways to have them avoid each other and just use c_move or c_trace for the razors. I've never had trouble with hundreds of entities, provided I optimised their actions.
If you don't mind:
How many entities do you have on-screen (or, how many do you want to have?)?
How many of those are enemies (or other moving objects)?
Jibb