I've run into the same problem, which only appeared after moving to Desktop 10.5.1. I agree that the work-around currently suggested by Esri is less than satisfactory.
I've found the following seems to work:
Create your selection-based layer as you would normally, but before trying to add labels or change the symbology, open the Python window in ArcMap, then enter this code:
print([r[0] for r in arcpy.da.SearchCursor("SelectionLayer", "OID@")])
or, perhaps even better:
print(", ".join(str(r[0]) for r in arcpy.da.SearchCursor("SelectionLayer", "OID@")))
where "SelectionLayer" is the name of your selection-based layer in the ArcMap Table of Contents.
This will print out in the Python window a comma-separated list of all the ObjectIDs for the features in your selection-based layer.
Copy that list, then open the Layer Properties for your selection layer and go to the Definition Query tab.
Write the definition query as
OBJECTID IN (>>paste the list of OIDs here<<)
Just make sure you have the correct field delimiters around the name of the OBJECTID field (i.e., none for an enterprise geodatabase, "" for file geodatabase or shapefile, [] for personal geodatabase).
Essentially, this just 'converts' the selection-based layer into just another layer with a definition query based on the OIDs of your selected features (which I suspect is what's supposed to be happening behind the scenes anyway, but which seems to have gone wrong with 10.5.1, and even earlier for some people).
You should then be able to modify the layer (symbology, labels, whatever) without it reverting to show all of the underlying feature class.
Anyway, I've found this works for me, and avoids having to export copies of the selected features. I'd be curious to hear if it works for other folks.
Cheers,
Andrew