I'm not sure the needed support is fully there for DNS for a mobile device or even a desktop.
The current situation is that there is only a global list of DNS servers (/etc/resolv.conf). But this is for redundancy only: a next entry in the list is used if no previous entry replied (down), but not if they replied negatively. And this is a limitation with VPN.
Let's say you have a VPN to mycompany.com. Ideally, you would want requests for anything in the mycompany.com domain to go to your company DNS servers. But your personal / non-work related request would go to your regular ISP. Today this is not possible easily as far as I can see (if you have a solution, please share). So what one do is to send all request to your company DNS.
But now let's say you're on the road, and want a personal VPN to your home, while having your company VPN on and regular (local) Internet access.
Both your home network and company networks will have internals hosts which are not known by any others DNS servers (myserver.home and internalonly.mycompany.com for example). I don't know a way to handle this with DNS only today (hacking your /etc/hosts is possible, but not nice). If it's possible I'd be glad to learn how.
The issue here is that DNS configuration is global, and mutliple DNS servers is only for failure protection. You would want DNS local configuration per interface, with some policy configuration (sending request in a domain advertized for an interface would be enough to address all scenarios above).
This handling is common to all Unix, and is sufficient for servers but not for fancier (but still possible) configurations.
Windows is different but not fully satisfying either IMHO. It has DNS configuration per interface, but will send DNS requests only on one highest priority interface at first. Then on all interfaces if no reply has been received after 1s. So in the scenarios above it would resolve the local/private names, but with a systematic delay of 1s. And it would send useless requests all over.