You should look into a decentralized scm actually like Mercurial (easy to use) or Git (more powerful, but also a bit more complicated to use).
- all devs have the complete history
- no central server which does fail
- no 3rd parties access your code, except you look for Bitbucket
- free of charge, no hosting necessary
- easy set up if you would like to have a canonical repo in your office (network path is enough)
- always available, even without internet connection
- your team needs to learn it
This link does show how to work with git in a proper way:
I was switching for these reasons to Mercurial and Git and I am not looking back. SVN is still great because it is really easy once set up. But on the other hand, I don't want to pay or maintain for another server.
If you force me to chose one of your options, I would go for a hosted one. They care for backups and such. But only, if they allow me to export the whole repos from time to time - don't trust anybody when it comes to your code. Their backup may fail too.