If it can be of any help, I found that using Jack for everything is much easier than juggling with ALSA card numbering and priorities and stuff.
I have qjackctl in my ~/.xinitrc, and it's set up to start jack automatically (with the last preset used).
When I use the USB audio interface, I simply stop jack, load the proper preset, and start jack again.
I never thought of automating the selection, to be honest; I use different USB devices, and selecting the right one manually is quick enough.

I have no need for Pulseaudio, I tried it for a while but it was only an annoyance for me.
I set up ~/.asoundrc to use the jack plugin by default, so non-jack software can be routed through Jack (Firefox, for example):

## ALSA JACK PCM PLUGIN
## http://jackaudio.org/faq/routing_alsa.html
## http://www.alsa-project.org/main/index.php/Asoundrc
pcm.jackplug {
    type plug
    slave { pcm "rawjack" }
    hint { description "JACK Audio Connection Kit" }
}
pcm.rawjack {
    type jack
    playback_ports {
        0 system:playback_1
        1 system:playback_2
    }
    capture_ports {
        0 system:capture_1
        1 system:capture_2
    }
}
pcm.!default { type plug; slave { pcm "rawjack" } }



-- Emanuele Rusconi