Seu problema real é a sua estrofe "auto eth0". Isso significa que a interface eth0 sempre será ativada, mesmo se não houver nenhum cabo conectado - e porque você configurou estaticamente a interface, ela não terá tempo para tentar o DHCP, ela será ativada e qualquer tentativa de enviar tráfego isso falhará. É por isso que você tem que manualmente ifdown a interface antes que seu sistema tente usar o wlan. Você deve ter apenas a estrofe "allow-hotplug eth0", que fará com que o sistema tente abrir a interface apenas se o cabo estiver realmente conectado (e também para descartá-lo se o cabo for desligado). Então seu sistema deve começar a escolher qual interface usar um pouco mais sensivelmente.
Você provavelmente também deve se livrar da estrofe "auto wlan0" e deixá-la com "allow-hotplug wlan0".