In Pi-Hole you can define groups and add devices to them and then assign block lists to those groups. I’m not sure if all your use cases are covered. Maybe you can check their discourse to see if others have found a decent way. The web interface is quite nice from my point of view.