You can use Win32::NetResource to connect to the machine with a specific username/password before having Win32::TieRegistry call RegConnectRemoteRegistry() which triggers an automatic attempt to connect by trying a few different username/password combinations in succession, which can take quite a while.
You could also implement your own time out. Doing that reliably with Perl isn't easy, but Win32 makes things worse. I have several ideas how to do this, but "the devil is in the details" and so there isn't one that seems worth fleshing out right now. Though spawning another program in the background and then being able to kill seems likely (super search has several threads on doing that in Win32).
Let me know what you try and how it works out.
(I don't think RegConnectRemoteRegistry() supports async operation, but I'll check into that as well.)
(but my friends call me "Tye")