In your original post, you state the SelectLayerByAttribute_management tool is "an expensive transaction." Assuming you mean expensive in terms of time, what are you using to time the tool and what are you comparing it against?
Generally, I stick with the arcpy functions and classes as much as possible and use the geoprocessing tools only when necessary or beneficial. In this type of situation, i.e., getting the bounding extent of selected features or a subset of features, I find the geoprocessing tools are faster for most of the datasets I interact with regularly.
I have had success using a mapping layer and the SelectLayerByAttribute_management tool:
def GetExtent(fc, sql):
lyr = arcpy.mapping.Layer(fc)
arcpy.SelectLayerByAttribute_management(lyr, "NEW_SELECTION", sql)
return lyr.getSelectedExtent()
Writing simple functions and using timeit on one of my datasets with ~250,000 records, I find using a map layer and SelectLayerByAttribute at least an order of magnitude faster than a search cursor. I can't say for your datasets, but it might be worth trying the geoprocessing tools instead of relying on a search cursor.