I've tried cloning via the last method, but this.inherited(arguments) is undefined for the feature layer (and I'm not sure what I need to add to the copied feature layer to avoid this).
The reason I'm is that whenever I call 'featureLayer.clearSelection' or make a new selection on the layer with selectFeatures, the layer deletes the selected objects (instead of just clearing the selection). My solution to this was to try and restore a cloned copy of the layer after every new selection / clear.