I had the same problem when I started experimenting with Net::SSH. I noticed they did this on purpose in their module after a little digging :-)
How I resolved it was to write code to test port 22 if it was alive using IO::Socket. Seemed to work pretty good. Any system that failed the IO::Socket test I skipped connecting to in SSH. I also logged to a failed file so I knew which systems I failed to connect to. Basically working around their design. This way I knew which failed and I connected with everybody else without bombing.
Does this help? If not let me know. I'll try to explain it better :D
Yes, that explains it quite well. This will work in every situation except for failed authentication. Worth noting though... I'll try to sort something out. Thanks for the info.