So, all works well when I make sure all the objects I plan to (un)marshall are Serializable. I think because I'm using socket: protocol, I need to make sure I do this. Not 100% sure on why but I do know that all works well once everything is Serializable.
By default, the socket invoker will use the SerializableMarshaller/Unmarshaller, which does require the objects being sent over the wire to be serializable (as is just using ObjectOutputStream/ObjectInputStream). There isn't a marshaller yet that will automatically handle non serializable payloads yet. Have added an issue in Jira for this (JBREM-28)