Olaf made some comments on my proposal and wanted to know a bit more about my actual implementation in the Hurd itself. I've done added a bit more to the proposal to explain what I feel is a good implementation. Basically, I was thinking the network stack could be divided into different translators per protocol and give the client access to different layers based on his needs.
A network interface that registers an IP address would be listed with the others interfaces with each having a respective hierarchy of transport protocols underneath.
In this example, the client could choose from the first six options to get the interface of its choice. The last two could would let the network stack decide which network interface provided the connection. In this way the client could request a link for a TCP connection, for example, for eth0 using /ip/eth0/tcp/ or might not care and use /ip/tcp/ and let the server decide using any heuristic it wants (round-robin, etc.)
In this way, it would be very versatile for providing different routing schemes and filtering options to the client.