I don't know the answer to your question, but your results do not surprise me. In fact I'm surprised that you get much time at all during which you get updates.
I'd like to expand the question, because I'd like to better understand what happens when you call the homemanager. When the homemanager is called and returns with homeManagerDidUpdateHomes, there is a period of time during which you can read characteristics of the various accessories and attempt to set them. After some amount of time, and this is where I'm uncertain, you can no longer directly access the same accessories and characteristics - you have to call the homemanager again. Whatever link you had to the HomeKit database seems to be temporary, and the HMCharacteristic you have identified in your app is not a reference that is good forever, it becomes "obsolete". You have to call the homemanager again if you want to deal again with that accessory and characteristic.
Is there some documentation of how this all works, in particular the timing issues? For instance when you attempt to set a characteristic's value, what determines how long it takes to come back with an error when the attempt fails? Does it time-out?