If you thought 486s were eye-opening, try the 8088 ;-) "I can only access 64K at a time? All the registers are 16 bits wide? What the hell is this crap?"
While we used Z-buffering in the demoscene for a few objects, I don't think it would offer an appreciable speedup for the kind of overdraw you're doing -- you still have overdraw, but this time in the zbuffer. It would save a little time during rendering as you'd only be looking up texels once per onscreen pixel, but that's not much of a speedup...
You might be onto something regarding a portal system. Check Fabien's analysis of the Build engine, it might give you some ideas: http://fabiensanglard.net/duke3d/build_engine_internals.php