I’m moving into a new apartment building with a buzzer system that doesn’t support long distance numbers, and I didn’t want to change my phone number (2FA headaches, etc). After some discussion on Slack I went with voip.ms. It was pretty easy to set up - I set up forwarding rule in the dashboard, then ordered a local Vancouver number for about $1/month. There are some other services that I think would work also with one-time fees, but $1/month seemed pretty good to me.
A cheaper solution might be to port your existing number to voip.ms or twilio, then set up rules to forward those to an existing Vancouver number.