If a timeout occurs, I set a bit to disable talking to that device for awhile (timer), then try again later. You do get the one long delay, but then the rest get updated quickly while the one that stopped talking sits in the timeout corner. I watch for awhile to see how long all good communications takes then set the timeout a bit longer than that.