I think you can do this with a little creativity in grouping items in a collection (assuming you need the grouping text to say just like what you lined out in your post).
Create a query column in your reviews table, and filter by reviewer company is this row > reviewer company, and reviewed company is this row > reviewed company. A rollup over that query would give you the total count.
Then construct your pluralized column (1 => 1 review, others => X reviews).
Finally a template so that we get X review/reviews for … from …
Add a collection and allow filtering by the reviewed company, and group by the template above.