[remoting] Serialize exceptions between domains inside try/catch
If a remote invoke in another domain throws an exception, the xdomain-dispatch wrapper will serialize the exception and pass it over to the calling domain so that it can be rethrown there. Serializing the exception object can itself throw an exception which we didn't properly catch, leading to unwinding to the caller domain without changing the domain state back and wreaking havoc.
If the serialization of the original exception throws a new exception, this new exception takes its place, being passed instead to the caller domain.