Hello, there.
_"The issue is that all these listings are coming from the same domain page" _- It is an issue, indeed. My recommendation would be to create unique pages (I wouldn't go with subdomains, I think that's just too much for each location. At the same time make sure that you have all locations in local directories. This will help Google not to "nix" the results.
I'd say look how big companies do it - let's say Apple and do the same way.
About links - https://moz.com/learn/local - good guide.
Hope this helps.