I've found Realistic/Haptic Vibration on the Xsellize repo to be the best one I've tried. It doesn't have customization like some others, but it's the one that feels the best. The vibrations when hitting a key are nice and short, but you feel them. It also vibrates when you lock and unlock the phone, which is nice. It also vibrates while dialing as well.
Edit: Not sure if it works on a 3GS, but it works fine on my 3G on 3.1.2.