Not fully formed as an idea, but I was thinking along the lines of a base S/N that would be recognized as unprogrammed. The master could then query slave, recognize the base number as a new node on the network, and assign it a new S/N. I imagine this functionality could be accomplished a number of other ways, so not a hard requirement in my mind.
Think there is a bootstrap problem in this. How can the server acces the client without address. eg there are 2 or more devices without S/N which one to address.
The solution could be a "voting market". Imagine an unproggrammed(UP) client device just calls on the bus "is there any nr 12, if so let him speak or silence forever"?
if another device has nr 12 it responds, and the UP device tries another/next number.
if no device responds the device can use nr 12.
If multiple devices call on the bus, the numbers passing by will not be used (skipped) except by the original sender, so if one shouts "12?" the next UPdevice shouts "13?" etc.
To prevent devices shout at the same time a random interval is used between shouts.