Just in case it's not so clear how that link demonstrates a possible solution, Curses uses STDIN, STDOUT, STDERR. So in a BEGIN block before initializing Curses, create a new IO pty and then redirect the standard file handles to/from it like in the example script in the link. Then Curses is connected to the pty.
Hope it works!
I suspect I'll have to switch to a multi-threading model so each client socket can have a separate thread and thus keep its own copy of Curses to play with.