Dynamic locations in page content
You could try something like the following:


Custom content type 'location' with the fields you need for your locations
Consider addressfield if these are address locations, or geofield if not
if you need mapping, consider leaflet
To use/display these locations elsewhere, you could add an entity reference field to other nodes or entities, and populate the field with links to the required location(s).
if you need to embed locations (e.g. in the body of a node ) perhaps node embed or advanced entity token (I've not used either one)
If you need to add additional view modes, you can use display suite or entity_view_mode


So, the general idea is that you define locations as needed using a custom content type. Then you attach these locations to other nodes/entities using fields or by embedding using a module that uses tokens or another special syntax.

With either approach, each location is stored just once, and the location is rendered on a page using a view mode that makes sense in that particular context.

To address your question about blocks specifically: you could indeed create blocks for company locations. To associate these blocks to pages/nodes, you could either embed the block in a node with something like insert block (https://drupal.org/project/insert_block), or attach the block to a node using block reference (https://drupal.org/project/blockreference).