The connection/dropping issues appear to have a common thread-- C-8 seems to lose track of which end devices are in its own child table vs. child devices of other routers.
The way it's supposed to work is whenever an end device has something to report, it doesn't use routing; instead it transmits expecting to be heard (and acknowledged) in a single hop radius by its parent. If it doesn't have one or loses connection to it, it finds one through a join/rejoin process.
When the hub has data for an end device it knows to be direct connected (in its child table), it doesn't immediately send data on-air to that device; instead it holds the data internally in its 'MAC indirect queue' and waits for the sleepy device to wake up and poll for it (poll intervals are every few seconds for devices like locks and most motion & contact sensors). No routing is involved since its a direct connection.
On the other hand, if hub knows the end device to be a child of another router (one not in its own child table, or one it doesn't have a route table entry for), it should issue a 'route request' broadcast. From the response it can generate a routed message to the parent of the target end device (which then holds it in its indirect queue, waiting to be polled by the end device).
The process can break down if an end device loses connection to its parent and joins another without the original parent (hub) purging that end device from its own child table. Messages from the hub to the child never get sent (the hub expects to be polled for them).
Interesting that the uncontrollable device in your case is a GE/Jasco switch. If a router (whose device ID is transmitting on the network) is never the target of commands from the hub there could be a couple of causes. Either the C-8 doesn't have a route to it (should be issuing route request broadcasts, and getting replies) or the C-8 is mistakenly treating it as a child device (holding data for it in its indirect queue, expecting to be polled for data instead).
I saw a similar issue during the .117 upgrade process (I had sniffer running at the time) with small C-8 setup of 1 GE plug and 6 end devices. After reboot to .117, only 3 end devices (original child devices of C-8) still worked; even GE plug was not controllable from UI. I could see broadcasts from GE plug's device ID on the network, as well as data exchanges between it and the other 'dropped' end devices (previously child devices of C-8) which were now polling the plug for data. Yet C-8 never issued routed commands to GE plug, only broadcasts, and none of the child sensors of the GE plug appeared active on the UI.
More than an hour later (I had since stopped the trace) and with no other intervention, everything began working from the UI except a single motion sensor (earlier trace during f/w upgrade had shown the sensor issued multiple rejoin requests and received acknowledged responses, both from GE plug and C-8, before ultimately failing to rejoin and disappearing from the network). No idea what might have happened during the that time to apparently heal the setup other than speculating about some child table age-out interval that might have gotten things in sync again.