Yes, I'm sure Rebex SFTP can help you. Although it doesn't support automated download retry or connection re-establish, these actions can easily be achieved by catching SftpException, checking its Status property and reacting accordingly.
In case of loss of network connectivity, the Status will be set to SftpExceptionStatus.ConnectionClosed. In case of a protocol error like a file lock, it will be set to SftpExceptionStatus.ProtocolError and SftpException's Code property can be used to determine what kind of SFTP protocol error occured.
10-12k files (100K to 15MB each) sounds like a lot. To get the highest speed out of Rebex SFTP, enable Sftp object's UseLargeBuffers option before connecting to the server:
sftp.Options |= SftpOptions.UseLargeBuffers; //(C#)
sftp.Options = sftp.Options Or SftpOptions.UseLargeBuffers; ' VB.NET
(where 'sftp' is an instance of Rebex.Net.Sftp)
This uses larger receive buffers at different levels (TCP/IP, SSH, SFTP), resulting in transfer speed increase.