I run Snapcast across my house connected to MPD running on a local Linux box, and have been pretty happy with it. I've had to do very little maintenance to keep things running.
The main thing I haven't been able to figure out is how to have multiple Snapcast streams and control which room listens to what. I don't actually think it's possible to do.. (though I could be wrong?)
Input streams are configured once on the server. You can group clients together and assign a stream to a group.
This can be done either with Snapdroid https://github.com/badaix/snapdroid or with Snapweb (is shipped with the Snapcast server since version 0.21) https://github.com/badaix/snapweb or with any other control client from the community
https://github.com/badaix/snapcast