When we copy a layer or feature record, we clone the OpenLayers object. If you clone a layer, you can add it to a map that already has the original. If you copy a layer record and add it to a store that is bound to a map, the original record gets replaced in the store and the cloned layer gets added to the map (see #57).
We should not be using copy if we expect a deep copy. This is the case with any Ext record.
>>> var R = new Ext.data.Record.create([{name: "foo"}]);
>>> var r = new R({foo: {bar: "deep"}});
>>> var r2 = r.copy();
>>> r2.get("foo").bar = "shallow";
"shallow"
>>> r.get("foo").bar
"shallow"
So, the same should be true for the layer/feature. If we want a deep copy, we should add a different method.