I've had the same problem the last week or so (must transfer 11k files in various directories), and have been using Net::FTP::AutoReconnect.
The server I'm getting files from is extremely flakey. Net::FTP was painful and N:F:A is slightly less, but it is still very unreliable. It doesn't handle all errors correctly (I end up with benign "Binary mode" responses in the fatal error messages) and completely dumps for other problems. The module looks pretty new at .1, so it's understandable.
I'm just now looking into trapping all errors/restarting everything or using a more industrial strength external program (as was suggested) to fetch the files that the script finds.
Surprising there isn't something more comprehensive out there after all these years, no?
PS, the first thing you should do is:
1. make a local copy of ::AutoReconnect
2. change all the die statements to return 0
3. add a sleep(x);$ftp->reconnect(); in place of your usual ftp error handling