This must have been asked before, but I can't find the exact answer and my attempts so far have not worked. Most of the overlap questions I see are for calculating the area of overlap for portions of polygons or points in polygons. I want to do something that should be simpler: count overlapping polygons from separate feature classes.
I have 100 separate feature classes, each representing the occurrence of a single species. They all use the same polygon template (based on sub-watershed boundaries), meaning that when more than one species is found in an area the polygon (sub-watershed) for those species' feature classes are perfectly aligned (overlap by 100%, exactly). Note: although not as efficient for disk storage, this is how the data was provided, rather than relating tables of species data.

Example of overlaps: Each color (blue, red dots, orange lines) each represent one species. When they overlap, e.g. red and orange, there is a perfect overlap of polygon boundaries.
What I want to do is count the number of species recorded for any given location, i.e. count the number of times a polygon overlaps and associated this with a specific polygon location. The area of overlap is not relevant in this case, just the count. With a raster, this would be equivalent to setting each layer's cells to have a value of 1, then summing. Is there a simple way to efficiently batch/automate this with 100+ vector features, without converting to raster?
So far I have tried using this count overlaps model. However, this resulted in an m-aware error, which seems unrelated. I am now running union, which has been progressing for a few hours without completing. Since I may try and run this with 1,000+ feature classes in the future, I was trying to find a more efficient way to complete the analysis. There must be a very simple way to do this, something that I am overlooking.