I have never thought very deeply about this, but rlwrap (which uses the alternate interface and has its own signal handlers) remains suspended in the SIGTSTP signal handler (by resetting the SIGTSTP disposition and then sending a SIGTSTP to itself) and defers the restoring until after wakeup (cf signals.c).
Yes, it's a bit of a hack, and rlwrap is very careless about any non-fatal signal (other than SIGCONT) that could arrive while it is suspendend, but I think these could be handled as well.