This was in a ~1400 sq ft house, with a little over 200 devices (motion sensors/lights/switches/smart plugs/humidity sensors/weather sensors). The network had a few repeaters the longest hop was 2 hops from the controller to the end device.
This was your problem. I've been using Z-Wave in my house since, I think, around 2010. I had major major issues with it at first exactly like what you describe. I "fixed" them by doing two things.
A) Banished all battery powered devices from the network. Seriously. I have one in a hall closest I haven't gotten around to getting rid of, yet. The network seems fine-ish with only that sensor but large volumes of battery powered mostly asleep devices, it falls over.
B) Abolished any notion of using my Z-Wave network for sensor reporting. No tracking humidity or weather or power with my Z-Wave network because, as you mention, the Z-Wave network completely falls over when you have volumes of sensor traffic on it.
Want to have one humidity sensor which reports hourly? Sure that's fine.
Want to have a humidity sensor in every room which reports every time there is a 1% change in humidity? lol no, your network will fall over.
My Z-Wave networks are quite large at this point, 200-300 devices, and consist of Jasco/GE switches, Jasco/GE fan controls, Jasco/GE smart outlets.
Removing sensor traffic and battery powered devices from my Z-Wave network has made it extremely reliable for me. Unscientifically I would say 99% of Z-Wave control commands execute in <1s.
So when humidity goes up in the bathroom, the controller would kick on the exhaust fan.
When temperature drops in a room that is active below a set point, the fan is kicked on for the forced air to start circulating + heat would get kicked on if necessary.
The whole point of having a smart home is to have a smart home that does stuff for you. Walking into a room and having lights turn on is the best thing EVER. I don't want to touch a switch if I can avoid it.
If sensor traffic is not meant to go on a Z-Wave network then they shouldn't allow those device classes to exist on the Z-Wave network.
On the sensors I had I cranked up the change required before it would report, but it also did periodic reports. I had to also update those so that the network wouldn't get flooded.
Sleepy devices/battery powered devices on the Z-Wave network for things like window sensors/door sensors is kind of the norm. It's hard to run power for all those things, and those sorts of security sensors are handy for not just automation but also for peace of mind!
The thing is that I have a similar setup now with Zigbee/Thread devices... and everything just works. In fact due to not having motion sensors that also act as humidity/temperature/light sensors I end up having more sensors on the network, yet it is far more stable.
We have well over 100 Z-Wave devices spread over 4000 sqft.
My house was 1200 sq ft, with a little over 200 devices.
This process is entirely automated but does take some time. It's absolutely critical to do this when adding a new device (both for the new device, as well as the overall network) but I found that just doing it regularly works great. I have all my networks configured to do this at 4AM daily since the network is unusable for the few minutes it takes.