Nunja, tiefer als mit tsocks kannst du SOCKS kaum verankern. Dann muss schon OpenVPN ran 
die libtsocks.so überschreibt die üblichen C-Funktionen zum erstellen einer TCP oder UDP Verbindung, ist ein Binary statisch gelinkt oder verwendet weder TCP oder UDP (ping bentuzt ja IMCP und nslookup DNS), dann geht das nunmal nicht.
Zwar soll tsocks DNS über TCP umleiten können, aber so ganz funktionieren tut das nicht. Das SOCKS Protokoll sieht das auch nicht vor.
Von daher, selbst wenn es möglich wäre, SOCKS als virtuelles Interface (tun0 oder so) anzubieten, müsste ein Hack für IMCP und DNS her, und dafür hat man dann ja VPN. Und das wiederum haben wir ja nicht hingekriegt.
Nachtrag: Die einige Möglichkeit, DNS-Requests zu verschlüsseln, ist via SOCKS5. Der Firefox kann das über die oben genannte Option - dann wird der Hostname dem SOCKS-Proxy übergeben und dieser löst ihn dann auf.
Mit tsocks geht das nicht, weil dieses wie gesagt die C-Funktionen überschreibt und dort gibt es getrennte Funktionen für das auflösen Hosts und das öffnen einer TCP-Verbindung.
Nachtrag 16.07.09: Natürlich ist DNS keine eigene Transportschicht, das war Unsinn. Das Problem ist, dass SOCKS nur Sockets umleitet, und tsocks sich vor die Socket-Funktionen des Betriebsystems stellt und so die Sockets umleitet. Die DNS-Auflösung verwendet offenbar andere Funktionen und lässt sich damit nicht umleiten.