Can I use the layered agents in the scope of layered protocols, when the packet (higher-level layer) is common for multiple protocols(low-level layer)?

I need to create an agent that sends packets on 3 different interfaces. The packet needs to be translated for 3 different interfaces/protocols.
Since the packet logic is the same for all 3 interfaces, and only the protocol translation is different, I would like to encapsulate everything into one agent.
However, I saw in the UVM guide that there can only be one UVC/agent per interface.
Also, it mentions the concept of protocol layering, but in the UVM guide the example uses only one lower-level layer (physical layer of the protocol) and multiple higher-level layers. I need one higher-level layer of the packet that will be sent, and multiple low-level layers that will get the packet, will translate it to the specific protocol, and then send it to the DUT.
I also looked the following two sessions related to the layered protocols, but again, there is no mention of using it with multiple protocols, just multiple layers of the same protocol:
Layering Sequences
Layered Sequences

Also in the UVM guide(link), under chapter 6.5.2. 1. Introduction to layering it is mentioned that there are many ways in which the transactions from one layer can correspond to transactions from other layers: “One-to-many — One higher-layer transaction is broken into many lower-layer transactions.” this however I am not sure if it implies the usage of multiple physical layers(multiple protocols) that are connected to the DUT. And I could not find an example with this.

Can I connect 1 agent to 3 different interfaces/protocols?
Can the agent choose randomly and dynamically during simulation, on which interface to send the packet?

In reply to GT_verifier:

You can encapsulate agents as well. The key is do you ever plan to test each protocol separately?

You can also use the concept of a virtual sequence as an encapsulation.

In reply to dave_59:

I do not plan to verify each protocol separately, just the packets being transmitted over the interfaces.
Do you mean that I can use layering agents and the whole layering protocol concept?
Or simply have one agent, instantiate it 3 times, connect it to each interface?
And then the virtual sequencer would be doing the coordination of sequences…

In reply to GT_verifier:

The latter makes the most sense to me.

In reply to dave_59:

Thank you Dave!