This problem is completely solved with storage devices and their partitions by having multiple names for each device or partition, so they can be referred to by hardware interface id, by uuid, etc.
$ ls -d /dev/disk/*
/dev/disk/by-id /dev/disk/by-path /dev/disk/by-uuid
$ ls -d /dev/[hs]d*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda5 /dev/sdb
The only reason the same proper solution does not work for network devices is that their namespace lives outside the filesystem. So the *right* fix for the problem is to put their namespace back inside the filesystem, where it belongs. The hack under discussion above makes some things easier and others harder: it cannot fully solve the problem.