Você diz que o rlogin "server não responde com um eco até que ele tenha toda a sequência", como o usual ^[OP para a tecla F1. Mas isso é apenas uma suposição injustificada. E um errado. E sua experiência com o tcpdump mostra que esse não é o caso; mostra exatamente uma implementação de rlogin atrasada sem qualquer "otimização".
De fato, um comportamento normal e esperado para o servidor é ecoar imediatamente qualquer entrada. Se o cliente, por algum motivo, decidir enviar ^[ sozinho, ele não experimentará um atraso estranho depois disso ((deixando de lado o TCP completamente).
O que deve ser uma solução limpa para a classe de problemas lag-rlogin, é que cada lado da conversação (ambos cliente e servidor) somente send() quando eles Acredito sinceramente que neste momento algum humano está esperando que o resultado seja exibido. Sob tal restrição, é um grande erro no cliente enviar ^[ , quando o software já sabe que ^[OP é a sequência completa pretendida e um usuário humano está interessado no resultado completo, não apenas no resultado de ^[ (um humano decide enviar OP ou talvez OQ em resposta, ou o quê?).
Então, o contra-intuitivo conselho para desenvolvedores de software, qualquer que seja o seu negócio com o TCP e eles desenvolvem lado do cliente ou servidor: lembre-se que send() não é imediato, possivelmente atrasará sua próxima transferência, então use com mais cuidado (resultado do acréscimo de latência do Nagle com ACK atrasado adicionando ainda mais latência).