My guess as to why Ethereal doesn't capture packets is that you're not telling it to use the right interface. When I capture packets I just use Kismet to do it and then pipe the dumps through Ethereal.

As far as MAC filtering, don't bother. Due to the way 802.11b works it's possible for two computers on the same network to have identical MAC addresses as long as they don't have the same IP. All someone has to do is listen to your network long enough to find a valid MAC address and then change their card to use it.

Your wireless problem could be fixed by making a bash script you could run that would tell the card which network you're using. If it's having a problem deciding which to use, keep in mind that the iwconfig command allows you to specify which ESSID to become part of, and the BSSID of the correct AP.