Don't force IRC off if not listening, do force it off if IPv4 is off.
Previously Bitcoin would refuse to use IRC if it was either not accepting inbound connections or not making outbound. Instead this changes it to not use IRC only if it's not doing either or if IPv4 is off completely. If Bitcoin is not listening this will use the default random nicks rather than the IP based ones.
Also,
Don't retry a failing IRC nickname forever.
If our IRC nick is in use (because some other node thinks it has the same address we think we have) don't fruitlessly try to reconnect using that name forever. After three tries, give up and use a random nick. Either we'll learn a new local address from IRC and switch to that, or it was right and the other guy is advertising for us.
This avoids a pessimal case where a second testnet node behind a nat is unable to get any peers because he can't get on IRC.