Well, in this case you know that you caught an exception while working with a particular Transport instance (the result of getTransport(retryCount). So I think it makes sense to invalidate only that Transport instead of all the Transport instances for that server, regardless of what kind of exception you got.

Re: RemoteNodeSuspectException, I had thought the exception would contain the address of the server being suspected, in which case you could have invalidated all the Transports for the suspected server. I see now that it doesn't contain any address, so all you can to is log it and eventually report it to the user.