Writing them is actually an excellent exercise, and humbling one too. Especially if you show your code to some skilled hacker / security expert.
Per-hash salts don't really slow that down at all, unfortunately.
Short-version: don't use the hash algorithms that are designed to be fast for protecting sensitive data; use something solid with a work factor instead.
For example, if the password is "a" and an unique salt is available in the database, it'll be trivial to brute force. If the password function is something like this, however: sha256("longsalt" + password + salt) the attacker will first have to figure out longsalt which can be slow if it's long.
Or am I completely mistaken?
In other words: there is a reason why security experts and cryptographers recommend the password storage mechanisms they do.
> A new salt is randomly generated for each password. In a typical setting, the salt and the password are concatenated and processed with a cryptographic hash function, and the resulting output (but not the original password) is stored with the salt in a database.
http://en.wikipedia.org/wiki/Salt_%28cryptography%29