Since we have the ability to add a layer twice on the client, we should rigorously define what each of those added layers is, and distinguish them from backend layers (for which there is only one instance). I was thinking of naming each layer that is added to the map something like LayerInstance. These could have a unique identifier that is essentially just the layerId, combined with it's copy number (<layerId>.<copyId>).
Currently, the distinguishing of different layer copies is done sort of ad hoc everywhere it's needed. This change would standardize that process.