I am using an external power supply for the servo; the same NiMH battery that powers it with the tester. So that's not it.
Do you have the servo and arduino grounds connected together like below?
What external power supply are you using with the Adafruit motor shield when you run the HS-311 (if you say "none" - there's your problem).
but I actually need every bit of torque from the HS-7950TH.
According to the link you posted, unless modified that servo will respond to pulse widths from 1500 to 1900 microseconds only.To test it, I would suggest trying to set it to an angle which corresponds to a pulse duration in that range.
Loading a servo to its maximum torque will fry it, you need to allow a reasonableoverhead so its not pulling amps all the time. The idea is the torque overhead isonly needed to accelerate the load briefly and the average motor current is fairlylow. If you want high duty cycle you'll need a servo in a metal case so the heatcan escape as a start....