If we kept the logic and code you posted, the one small change that could improve performance is to make you 'subwatershed' from CopyFeatures_management an in_memory feature class rather than write it to disk. esri link
Indeed, as @snowman2 points out, using pyproj fixes the performance issue. The relevant command would look like this (for more complex geometries use shapely.ops.transform):
python -m timeit -s "from pyproj import Transformer" -s "transform = Transformer.from_crs(31287, 4236).transform" "transform(419908, 333400)"
It sets up a ...
I would recommend using pyproj as it has dealt with this issue already: https://pyproj4.github.io/pyproj/stable/advanced_examples.html#optimize-transformations
The creation of the transformer has more overhead in PROJ 6+. That is why pyproj added the Transformer class. See: https://github.com/pyproj4/pyproj/issues/187
The bottleneck is likely with the join by attribute being re-evaluated many times.
You can skip this step and compute everything at once in a virtual layer. As a bonus, it will tell you if you have more than 2 streets in a polygon.
Eventually, you can filter the entries having a single street name
SELECT p.polyID, COUNT(DISTINCT s.streetName) as cnt, ...