What about using a unique salt for each user. For example, if you use the user's login name. Then, the hacker would have to make a rainbow table for each user, in essence.
I think bcrypt is probably still more secure? Or maybe the best would be to combine both.