Ah! Sorry about the late reply on this. It came up right before we started the Global Game Jam, and I ended up forgetting about it.
I'm pretty sure it's because you are using the positions of the objects as their anchor points. 99.9% certain that you meant to use (0, 0) as the anchor point. That attaches the spring to the centers of the balls. The anchor points are relative to the position/rotation of the body. So by using the ball's position is a very bad thing! The farther the ball is away from the origin of space, the farther from the center of the ball the spring will be attached and will cause it to rotate around in crazy ways.
There is only one joint that can be optionally initialized with absolute coordinates, cpPivotJoint. It allows you to specify a single absolute point as the anchor point which is then converted to relative coordinates for setting the anchor points on the two bodies.