I used one esp32 (under ten bucks), to read my water meter, make my hardwired smoke/CO alarms smart and hook-up 5 window contact sensors. Works great and wasn't that hard to do (water meter reader was a little tricky, lol). Compare this to the cost of the zwave/zigbee sensors one would have to buy and there is no comparison.
Used this community app: [Release] HubDuino v1.1.7 - Hubitat to Arduino / ESP8266 / ESP32 / ThingShield Integration (ST_Anything)
Best part is, I still have lots of room on the esp32, if I want to add some more devices.
I realized your post said you wanted to add zigbee/zwave connectivity and the solution I mentioned doesn't accomplish that, but as long as the data is reliably sent to the hub, do you care?