Well my last suggestion would be to remove the private IP address off eth0. Not even sure why you would want that. You must be doing something special.
It's possible that iptables is sending your VPN traffic (assuming my config) from 172.16.1.1 out your private IP address on eth0, instead of you public IP address on eth0, and upstream is dropping it. I have no idea how you would even test for that.
I'm assuming you have actually done the following, and the kernel you are using will actually forward traffic.
My Debian kernel does, does the Linode one? Don't know.
Code:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j MASQUERADE
If this doesn't work, I don't know what to suggest next.