To mitigate te disconnects on coin-switches you can definitely do at least these two things (besides the already mentioned --failover-only):
1. use sgminer:
https://github.com/veox/sgminer or Martin "Kalroth" Danielsen's personal cgminer 3.7.2 build, you can find it here:
http://k-dev.net/cgminer/. They include patches for resilience against pool disconnect with frequent coin switching as well as several other improvements (see
http://k-dev.net/cgminer/kalroth-changes.txt)
2. Set appropriate values for scan-time and expiry:
--scan-time|-s <arg> Upper bound on time spent scanning current work, in seconds (default: 60)
--expiry|-E <arg> Upper bound on how many seconds after getting work we consider a share from it stale (default: 120)
A good in-the-middle values are:
"scan-time" : "15",
"expiry" : "15",
And even some more aggressive:
"queue" : "5",
"scan-time" : "1",
"expiry" : "1",
BTW: to decrease rejects, you should
decrease Intensity. High intensity will hurt low-difficulty altcoins. Go for 13 with dual-thread GPU's (7970, 7990, R9 280) and with 18 with single thread GPU's. Or even beter, use xIntensity with Martin "Kalroth" Danielsen's personal cgminer 3.7.2 build at a level of xIntensity = 144.
edit: hashcows definitely needs a secondary stratum server ... you can't run a serious pool with just one stratum server
edit: A bit of explanation for "failover-only":
--failover-only: Don't leak work to backup pools when primary pool is lagging
The normal failover mechanism in cgminer will allow some work to go to the backup pools if there is a delay in getting work from the primary pool you have set. This can be as much as 10% if the pool has latency issues. It then only fails to the backup pool if the primary pool stops giving work for 1 minute. failover-only does not change the failover mechanism, but it does not allow work to go to the backup pools unless the primary pool has failed completely for at least a minute. It then will switch to the backup pool. If cgminer considers a pool dead or down, it tries to contact that pool 1 minutely.
Q: Work keeps going to my backup pool even though my primary pool hasn't failed?
A: Cgminer checks for conditions where the primary pool is lagging and will pass some work to the backup servers under those conditions. The reason for doing this is to try its absolute best to keep the GPUs working on something useful and not risk idle periods. You can disable this behaviour with the option --failover-only.