Hey, how about trying bridge domains (not sure)? If you have them connected to different physical interfaces and have EFPs/Service instances defined then i believe that would work (example below).
Interface Gi0/0/1
service instance 1 ethernet
description **Provider 1**
encapsulation dot1q 100-200
rewrite ingress tag pop 1 symmetric
bridge-domain 1
Interface Gi0/0/2
service instance 2 ethernet
description **Provider 2**
encapsulation dot1q 201-300
rewrite ingress tag pop 1 symmetric
bridge-domain 2
Interface Gi0/0/3
service instance 3 ethernet
description **Provider 3**
encapsulation dot1q 201-300
rewrite ingress tag pop 1 symmetric
bridge-domain 3
So basically anything arriving on those interfaces with dot1q tags as defined will be placed in the bridge domain listed under the interface. From there you can do L2 / L3 to where ever.
Interface Gi0/0/1
service instance 1 ethernet
description **Provider 1**
encapsulation dot1q 100-200
rewrite ingress tag pop 1 symmetric
bridge-domain 1
Interface Gi0/0/2
service instance 2 ethernet
description **Provider 2**
encapsulation dot1q 201-300
rewrite ingress tag pop 1 symmetric
bridge-domain 2
Interface Gi0/0/3
service instance 3 ethernet
description **Provider 3**
encapsulation dot1q 201-300
rewrite ingress tag pop 1 symmetric
bridge-domain 3
So basically anything arriving on those interfaces with dot1q tags as defined will be placed in the bridge domain listed under the interface. From there you can do L2 / L3 to where ever.