I found the problem..
As I originally thought, recursive faults are indeed allowed (a fault
handler is allowed to fault), however, the *invocation* of a fault handler
must succeed, or it increases the exception count, and calls double fault,
etc.
A triple fault wouldn't be a 3rd nested exception, but a fault when trying to
invoke the double fault handler, which was invoked because the cpu failed to
invoke some other handler.
Anyhow, the problem was in my PL0 stack not being in memory in my new
process, so that it couldn't do anything at all, generating faults in the
attempts to invoke exception handlers, thus committing shutdown.
Nested/recrusive page fault handlers work perfectly now, with no limit on the
nest-level.