Have you tried Google voice? You can set up a local number and then have your outgoing calls route through that. You can have you incoming calls forwarded from that number to your cell, home, office, or any number you choose. It will also do visual voicemail for you and transcribe messages so you can read them.
I have only used it for the voicemail piece, but I am 99% sure it will do the rest.