By going into advanced routing and showing routing table using the web GUI
Unless that shows actual packet counts per interface, just because you have a route doesn't mean a packet takes it.
OK, so majority of traffic to ppp0, which you've now seen you can do by including "route-nopull". So, what you are missing is the VPN routing.
iptables -I POSTROUTING -t nat -o tun1 -j MASQUERADE
Yep, you need that.
ip route add default dev tun1 table 200
Nope. You still need the "via <Gateway IP>" in there. Look at the documentation for --up. It passes the script 6 parameters, the 5th being the <Gateway IP>. And if you really wanted to make this script fully portable, the 1st parameter is the <TUN device>.
ip rule add fwmark 1 table 200
That assumes you have used the iptables mangle to set the "mark", which you haven't, so does nothing.
ip rule add from 192.168.0.109 table 200
That is doing exactly what you want, for any packet coming from 192.168.0.109, it sends to table 200, which forces routing to tun1.
Now for the IP specific routing. You were close with:
ip rule add to 208.64.38.55 table 100
But you had the order wrong. This rule must be added after the 192.168.0.109 one, so that it appears earlier in the rule chain.
For that to work, you have 2 options. Either create a table 100, using the "add default", but with the ppp0 Gateway IP and ppp0. You can easily script something to pull the IP from an "ifconfig ppp0" command. Or look at the existing tables set up by ppp0 and find the one that has the correct "default via <IP> dev ppp0" entry and use that table name instead of "100".
Cheers.