If you add a lookup from Contact to Account called "Company" and use a triggertriggers (on Contact for inserts and updates and on Account for updates and deletes) to keep that set to the root Company Account, then you should be able to show all the Contacts via that association in a normal Account layout. (Assuming you aren't using a record type to differentiate between Company and Location the list would appear for both but would be empty for the latter.)