Multiple Outbound CID's and Inbound DID's on Line Buttons

I like some input on how to accomplish something.

Firstly, the business has 4 entities, each with their own phone number. I’m going to be using Sip trunking.
The phones will be Polycom 550’s and a 650. They have 4 line buttons. I want to give each Line button the ability to call out with a specific CID… AND for inbound calls matching a particular DID to show up on that line button.

Now, I know the 550 can register with 4 different extensions, and utilize 1-4 line keys, but this seems a little cumbersome. So I’m looking for an alternative method. Any ideas?