I dove back into Wireshark to cross-check the Session IDs sent among the control channel ClientHello / ServerHello and the data channel ClientHello / ServerHello.
control channel
ClientHello: Session ID Length: 0
ServerHello: Session ID Length: 32, Session ID: ad28106094597d2dbba4b319761e30ed9f896fdc01d467ce66764967cebf45bc
data channel
ClientHello: Session ID Length: 32, Session ID: ad28106094597d2dbba4b319761e30ed9f896fdc01d467ce66764967cebf45bc
Of course, the server doesn't like the data channel ClientHello, so we never see the ServerHello there; however, this does confirm that the session ID is reused from the control channel, as desired. This implies that there is something else about the ClientHello the server does not like.
Looking at the Wireshark decode a bit more closely between curl w/ Secure Transport and libncftp w/ Secure Transport, I noticed something that I missed the first time I looked.
The two ClientHello payloads are otherwise identical in size and content, except for, as expected, the random, timestamp, and session ID portions.
However, the item that escaped my glance was this from the packet decode:
curl w/ Secure Transport data ClientHello: TLSv1.2 Record Layer: Handshake Protocol: Client Hello
libncftp w/ Secure Transport data ClientHello: TLSv1 Record Layer: Handshake Protocol: Client Hello
Note that curl has TLSv1.2 whereas libncftp has only TLSv1. I assume this is simply a decoding anomaly since the hex dumps compare as expected. The brackets and pipes are my own additions to call out the expected timestamp, random bytes, and session ID differences.
curl
0000 f0 9f c2 10 27 1c e4 50 eb ba 2f d7 08 00 45 00 ....'..P../...E.
0010 01 11 00 00 40 00 40 06 00 00 c0 a8 01 80 ca 26 ....@.@........&
0020 61 e6 c7 63 88 53 fa c6 37 4e ea 9b 3f 32 80 18 a..c.S..7N..?2..
0030 08 0a ef 38 00 00 01 01 08 0a 38 20 83 ef e3 37 ...8......8 ...7
0040 2e 58 16 03 01 00 d8 01 00 00 d4 03 03[67 a5 bb .X...........g..
0050 d6|81 ca 86 5c 73 35 b5 81 d3 e5 dd 36 76 91 58 ....\s5.....6v.X
0060 5d 34 b6 f7 ee be ad dc d5 cd b8 a6 4d]20[91 51 ]4..........M .Q
0070 72 52 d3 42 49 6d fd 12 39 e8 ad e2 c0 6f 48 22 rR.BIm..9....oH"
0080 81 57 91 d5 4f 03 92 c8 36 71 6a 7c 1b 64]00 3a .W..O...6qj|.d.:
0090 00 ff c0 2c c0 2b c0 24 c0 23 c0 0a c0 09 c0 30 ...,.+.$.#.....0
00a0 c0 2f c0 28 c0 27 c0 14 c0 13 00 9f 00 9e 00 6b ./.(.'.........k
00b0 00 67 00 39 00 33 00 9d 00 9c 00 3d 00 3c 00 35 .g.9.3.....=.<.5
00c0 00 2f 00 af 00 ae 00 8d 00 8c 01 00 00 51 00 00 ./...........Q..
00d0 00 14 00 12 00 00 0f 66 74 70 2e 73 6a 74 75 2e .......ftp.sjtu.
00e0 65 64 75 2e 63 6e 00 0a 00 08 00 06 00 17 00 18 edu.cn..........
00f0 00 19 00 0b 00 02 01 00 00 0d 00 12 00 10 04 01 ................
0100 02 01 05 01 06 01 04 03 02 03 05 03 06 03 00 05 ................
0110 00 05 01 00 00 00 00 00 12 00 00 00 17 00 00 ...............
libncftp
0000 f0 9f c2 10 27 1c e4 50 eb ba 2f d7 08 00 45 00 ....'..P../...E.
0010 01 11 00 00 40 00 40 06 00 00 c0 a8 01 80 ca 26 ....@.@........&
0020 61 e6 c5 cc ac d7 d3 d9 07 db 23 63 aa 6c 80 18 a.........#c.l..
0030 08 0a ef 38 00 00 01 01 08 0a 41 60 7d d1 e3 26 ...8......A`}..&
0040 39 99 16 03 01 00 d8 01 00 00 d4 03 03[67 a5 b7 9............g..
0050 7f|8f 37 c3 08 81 8f 72 3a 2d 51 26 9b ce95 8a ..7....r:-Q&....
0060 0b 06 9d 81 c3 6b 3c f3 3a 81 a6 fa 4c]20[f8 f4 .....k<.:...L ..
0070 23 72 b1 38 f1 ea 12 12 4e 09 bd e2 ab b2 8f 34 #r.8....N......4
0080 8b 97 74 5f 79 2a 37 b4 96 10 35 ca 7a b1]00 3a ..t_y*7...5.z..:
0090 00 ff c0 2c c0 2b c0 24 c0 23 c0 0a c0 09 c0 30 ...,.+.$.#.....0
00a0 c0 2f c0 28 c0 27 c0 14 c0 13 00 9f 00 9e 00 6b ./.(.'.........k
00b0 00 67 00 39 00 33 00 9d 00 9c 00 3d 00 3c 00 35 .g.9.3.....=.<.5
00c0 00 2f 00 af 00 ae 00 8d 00 8c 01 00 00 51 00 00 ./...........Q..
00d0 00 14 00 12 00 00 0f 66 74 70 2e 73 6a 74 75 2e .......ftp.sjtu.
00e0 65 64 75 2e 63 6e 00 0a 00 08 00 06 00 17 00 18 edu.cn..........
00f0 00 19 00 0b 00 02 01 00 00 0d 00 12 00 10 04 01 ................
0100 02 01 05 01 06 01 04 03 02 03 05 03 06 03 00 05 ................
0110 00 05 01 00 00 00 00 00 12 00 00 00 17 00 00 ...............