I had a debugging session with the admin and also used wireshark on my system. This problem seems to be different from KEX limitations. Handshaking didn't even reach KEX. In wireshark, I see the following communication with the server IP:
client -> server : [SYN]
server -> client : [SYN, ACK]
client -> server : [ACK]
... TCP Keep-alive messages from server to client and client to server for a couple of minutes ...
server -> client : [FIN, ACK]
client -> server : [ACK]
client -> server : [FIN, ACK]
server -> client : [ACK]
In filezilla, at connection start, I see the following instead:
client -> server : [SYN]
server -> client : [SYN, ACK]
client -> server : [ACK]
client -> server : [PSH, ACK] : Data: SSH-2.0-FileZilla_3.50.0
server -> client : [ACK]
server -> client : [PSH, ACK] : Data: SSH-2.0-ProFTPD 1.3.1. Authorized uses only. All activity may be monitored and reported.
server -> client : [PSH, ACK] : Data: qcurve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1ssh-rsa,ecdsa-sha2-nistp256laes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctrlaes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctrBhmac-sha2-256-etm@openssh.com,hmac-sha2-256,hmac-sha1,hmac-sha1-96Bhmac-sha2-256-etm...
client -> server : [ACK]
...
Also, on the server side, it either receives nothing for the whole time (as indicated by server logs showing an i/o timeout when dopus aborts after a while). Based on our debugging, it seems that Directory Opus isn't even starting the handshake as it's supposed to.