The method of attack was:
Open in editor, replace approx. half the teleport brushes with point entities (setting their models to maps/b_nail0.bsp so that they have volume).
Compile the map (I was lazy and did a standard light pass/level 2 vis on the precompiled version provided).
At this point we are below the model limit.
Next come the hacks to get us below the 600 entity limit on map start : Merge 4 of the trigger_relay entities into the info_player_spawn, info_player_spawn2, info_player_deathmatch and info_intermission. Merge every remaining trigger_relay entity into one of the ambient_* entities. This got the map down to 601 entities and I was stuck so tantalizing for about 20 minutes before I realised I could also merge trigger_counter entities in the same way. 600 exactly on hard difficulty!
Thirdly we need to have enough spare entities to not crash while we play. First things, all the ambient_ entities which are not performing double duties as triggers get instructed to suicide themselves on frame 1. That nets us about 20 entities.
Once you get past the exploding slipgate sequence the entity pressure drops enough to ignore. So the last bit of work was to make sure that up until that point we can save as many entities as possible. Firstly I went through and made sure that any trigger_counter entities which fire before that point are removing themselves once used.
Next was to make the early teleporting monsters tidy up after themselves, by making them killtarget their own teleport destinations on death. This makes sure that even if the player doesn't collect their backpack, the net change to the entity count is 0. There's a mild hack which is worth sharing here: monsters won't killtarget entities successfully unless they have a target field set as well. It doesn't matter what the target field is, any non-empty string will do, but choosing an unused targetname feels safer.
Phew, so now I can stop spamming this thread with hackchat and everyone who couldn't play the map before can come share!