Creating a single BP node which routes all incoming net data

My goal is to have a single Blueprint accessible node that can handle different types of data sets sent from clients.
Why? It’s best not to ask such things as at this point I’m not sure I could give a sane answer.

So far I have built a Listener that creates sockets for clients. I have all inbound communication set to fire off a single event node called “ClientRequest.”

Data is prepared as a struct on the client side, serialized on the client side, sent to the server which de-serializes it back into the same struct and then outputs the struct into the ClientRequest node.
That’s all simple, but my problem is getting different sets of data efficiently. I expect to have 30-40 different types of requests each with their own parameters and I want to make sure that the data sent and received only contains relevant and non-empty data.

My initial thought was to used inherited structs where the first byte dictates the type of data to expect, which works fine until I bring it over to BP where casting between structs, regardless of inheritance, is not possible.

At this point I would like to ask the community and see if any of you know of a efficient way to make this possible.
I thought about using UObjects in place of structs, pretty much the same way the built in game save logic serializes/de-serializes to disk, but just over network. However, not sure how efficient this would be.
Just passing the node an array of bytes isn’t ideal as it sorta defeats the easy-to-use solution I’m trying to create.

Here is an image of what I have currently. The current issue being that I’m limited to the data of the base struct.