The only way I can think to do this well is by giving everyone a different phone number, like many of us do with email addresses. Implementing this would require a way to create and vend phone numbers quickly, similar to creating a password with a password manager. There would need to be a way to associate each number with who I gave it to. When my phone rang that identity would need to be surfaced in some way. I would need a way to make outbound calls using these numbers.
I'd happily pay $100+/month for <some number of> phone numbers (50-100?) plus $x/month for each number above that. If the service was metered by call minute there would need to be a generous number included in the monthly flat rate and excess minutes should be inexpensive.
I imagine the user experience would be similar to what Sidecar/Flyp/Cloud SIM deliver.