If you are using external numbers for the agent, you can receive, transfer (using the feature codes) and get the next call by using a custom extension for each agent and changing the dial string to:
This creates a local extension that is tied to a remote number.
There is a big caveat here in that you cannot turn on call confirm. If you turn on call confirm, when you transfer the call, the transfer to party will also receive the call confirm prompt, but no matter how fast you confirm, they will receive the message that the call is no longer available, thus breaking transfers (blind or attended).
We have spent months trying all sorts of combinations to attempt to get remote agents (via PSTN) the ability to have transfer and call confirm to no avail. I have opened a feature request (View Ticket: #984743), but the likelihood of any action being taken here is extremely low (there are many competing priorities).
A better option, if possible, is to use a softphone on the cell phones/remote computers. This can add overhead to provisioning, but, to my knowledge, is the only way to get everything to work as intended.
A final hailmary might be to look at FusionPBX. I asked a similar question on the forum over there and there seems to be consensus that you can do what your looking for without compromise on that platform. I did try this myself.