After further testing over many days, I am almost certain that this problem is caused by the power-saving mode in the Broadcom drivers, which is enabled when the laptop is on battery by the script in /usr/lib/pm-utils/power.d/wireless which runs "iwconfig eth2 power on". Manually running "iwconfig eth2 power off" seems to fix the problem, as does plugging in the laptop. I replaced the pm script with one that always runs "iwconfig eth2 power off" regardless of battery status, and I have not had any major connectivity issues since then.
After further testing over many days, I am almost certain that this problem is caused by the power-saving mode in the Broadcom drivers, which is enabled when the laptop is on battery by the script in /usr/lib/ pm-utils/ power.d/ wireless which runs "iwconfig eth2 power on". Manually running "iwconfig eth2 power off" seems to fix the problem, as does plugging in the laptop. I replaced the pm script with one that always runs "iwconfig eth2 power off" regardless of battery status, and I have not had any major connectivity issues since then.
So, in conclusion, I think we can mark this as a duplicate of https:/ /bugs.launchpad .net/ubuntu/ +source/ linux/+ bug/991232