We can assume that not all relays are powered on at the same time... so there is a little statistical margin.
I think that the RS485 solution shall be discarded, just because all the available IC doesn't allow to read back the values that are on the bus.
Does you have suggestion?
What you are currently doing is a bit analogue for me
Re the RS-485, collisions are an issue with any system that doesn't release the bus for one of the logic levels, typically this is handled by using open an collector/drain configuration as you know.RS-485 transceivers can be wired to do this by connecting the transmitter input to 5V and running the data to TE. Thus the outputs go tri-state when the data is low and are driven when the data is high (or is it the other way around, no matter). This requires fail safe termination (two more resistors) of course.
Use a coil that work in the linear zone for the maximum current allowed on the bus
Use a coil rate based on the number of real devices.