Just so people know. Found this.
My solution will be to have eth0 -> br0 -> vif and split of vlans based on br0, not eth0
Found the solution here -
http://blog.davidvassallo.me/2012/05/05/kvm-brctl-in-linux-bringing-vlans-to-the-guests/
One way that proxmox can fix this is to do the following.
eth0 -> br0 to get the tagged trunk onto br0
br0.1, br0.2, br0.3, etc are created using vconfig and exist as untagged interfaces. You can add these untagged interfaces to other bridges and use those bridges in vms. You can also use br0 directly as a bridge for VMs (so they see all the vlans on the trunk that you have defined). He didn't define the adding of br0.3 and the like to other bridges in the blog, but you can do that
hope that makes sense