Я думаю, что вы смешиваете некоторые понятия. VNC делает то, что вы пытаетесь сделать, и единственное, чего ему не хватает, - это NAT Traversal. Но NAT Traversal не отвечает ЛЮБОМУ протоколу (насколько я знаю). Тем не менее, ничто не мешает вам создать NAT Traversal до того, как соединения VNC будут включены.
Использование XML Over HTTP (S) для обхода брандмауэров - это просто огромное излишество. Основная проблема этого подхода заключается в том, что TCP-соединение не подходит для приложений реального времени, таких как передача видео, и данные XML не являются двоичными! Я думаю, что при таком подходе ваше приложение-убийца никогда не запустится.
Зачем изобретать велосипед и не использовать RTP / RTCP + Upp Hole Punching? Существует множество (не читаемых) документов по этой теме, и, насколько я знаю, Java-апплеты могут отправлять / получать пакеты UDP. Единственное, что вам нужно будет реализовать - это кодирование видео / аудио / событий (то, что VNC уже делает, протокол RFB!)
Надеюсь, это поможет.