In my current project I have modules communicating using simple request/reply form of RPC (remote procedure calls). I want to automatically retry failed requests if and only if there is a chance that a new attempt might be successfull.
Vast majority of errors are permanent, but errors like timeouts and I/O errors are not.
I have defined two custom exceptions - RPCTransientError and RPCPermanentError - and currently I map all errors to one of these two exceptions. If in doubt, I choose the transient one. 
I do not want to reinvent the wheel. My question is: is there any existing resource regarding classification of standard exceptions to transient and permanent errors?
I'm using Python 3.3+ with the new OS and IO related exception hierarchy that I like a lot. (PEP 3151). Don't care about previous versions.
No, there is not for the simple reason an error may be transit for you while for someone else it may be seen as permanent, depending on the usage.

If in doubt, I choose the transient one.

If even you can't be sure about the errors from the software you designed, how can someone make this choice to be universal?
One approach is to deal with only the most basic subclasses. You say you want to retry on IO Errors and timeouts; Since Python 3.3, IOError and some other exceptions like socket.error have been merged onto OSError. So, you can simply check for OSError and it will apply for those and many other subclasses like TimeoutError, ConnectionError, FileNotFoundError...
You can see the affected classes with OSError.__subclasses__(). Try on a python shell (do this recursively to find all of them).
Is there any classification of standard Python exceptions to transient and permanent errors?