Static entities can go to infinite while you're at it; there's currently a static array of 128 (I think) for storing them, so eliminate the array and just alloc them on the hunk as required. This is also going to reduce memory usage for maps which have less than 128 statics - double win.
Temp entities and beams can also go to infinite, but they're a bit more fiddly.
cl_entities can change from entity_t cl_entities[MAX_EDICTS]; to entity_t *cl_entities[MAX_EDICTS]; with dynamic allocation on the hunk. You'll rarely need the full MAX_EDICTS on the client so this can save quite a bit. Server-side if you want to implement similar on sv.edicts you'll need to do quite a bit more work but it's not impossible. You can bump MAX_EDICTS quite a bit then.