I use GNU Screen all the time in OS X, primarily running on the server side of my SSH connections in order to maintain persistence, while multitasking. The beauty is that if I get disconnected, all of my virtual screens get resumed, with almost no work. I'm sure we all know this.
My constant complaint is not being able to scrollback in each of my virtual screens with Shift+PgUp and my touchpad. I'm aware of the settings change that fixes this problem if you don't switch screens within a session, but each screen doesn't maintain its own separate history, like tabs in Terminal. Obviously, in order to do this, screen would have to store a ton of data and pipe it over your connection every time you switch. Wasteful, and the latency would be awful.
What would work is some sort of intelligent client-side client to the remote instance of Screen or tmux, something that intelligently manages the scrollback of each virtual screen separately. Is there such a solution out there? Heck, even a good way of simply locally managing multiple ssh sessions to the same server, each with Screen running (with only one virtual screen) would be a great improvement, but only if it Just Works the way screen -d -r does, but I can't think of a way to make this transparent. Another potential option would be a terminal program that could automatically make SSH connections with a new named single-screen screen/tmux session, and remember session sets so that they could all easily be resumed.