Edit: It's better but still shaky. I still need to find a better solution...
I figured out an acceptable solution. Instead of parenting the camera to the character, I made an independent one in the main scene, then wrote my own smooth following code based on what was explained in this Unity Tutorial. The resulting code worked identically to the built in method (still shaky when the character stops), so I added a cutoff (set to 20.0 in my script) that works similarly to drag margins. So the camera stops following when it gets within the cutoff distance, which I set to just as the shaking starts. Here's the code:
func _fixed_process(delta):
if(target):
var x = lerp(get_pos().x, target.get_pos().x, lerpRate*delta)
var y = lerp(get_pos().y, target.get_pos().y, lerpRate*delta)
var pos = Vector2(x,y)
if(pos.distance_to(target.get_pos()) > cutoff):
set_pos(pos)