To both thanos1983 and salva, thank you for your replies. Your suggestions were very helpful as I worked to diagnose the problem. However, it turned out to be two things. First, the awful username they assigned contains an at sign '@' which I resolved by escaping it with a backslash. This alone merely changed what I was seeing but it still wasn't working. The second thing was that, completely without explanation, my code started working. Undoubtedly, something on the SFTP server end changed and, while I've asked what happened, I'm not very hopeful for full disclosure from their end.
Finally, thank you for the excellent Net::SFTP::Foreign module - it has been invaluable to our operations for many years.
Cheers! Dano.