The problem with VPN services, at least when used to circumvent regional restrictions, is that a lot of other people do the same thing, and the VPN provider ends up getting blocked. I've never had that problem when using SSH.
Also, with SSH, I own both the client and server, and setting it up is extremely easy. Setting up a VPN, when you do own both client and server, takes more effort, I think.
Basically, I set up SSH on a server somewhere (I actually have many), and a local SSH key (I don't use passwords with SSH). The SSH server can be a cloud server or a physical one; it doesn't matter. Then, I create an alias in my .zshrc or .bashrc configuration file to easily create a tunnel to that server, like this:
alias <alias_name>="ssh -D 8080 -f -C -q -N <username>@<host>"
Then, I go into my network settings and create a local SOCKS 5 proxy that points to the port I'm tunneling through (8080 in this case). Once I've done this, everything between me and the remote server is encrypted, and it appears that I'm browsing from the remote location. This works well for services that are not available in my country, as long as I can set up a server in the country I want to appear to be coming from.
If you want to keep the SSH tunnel open all the time, you can use autossh, like this: