I found what to do. For anyone who comes across this topic while searching (I frequently end up on my own help posts when googling lol) the solution:
After editing the bone_rest transformation, I had to edit the 'skin' property of the mesh. The skin has a bunch of transforms which the Khronos gltf spec describes thusly:
You can remove the skin and launch a scene, the animation will play fine but if you edit the rest pose like I did you still have problems. I updated these new values with the following:
var numBones = skel.get_bone_count()
for n in range(numBones):
var gp = skel.get_bone_global_pose(n)
var gpi = gp.inverse()
skin.set_bind_pose(n,gpi)
Importantly, I set the animation of the skeleton to a 'default pose' I had created, which is literally just 1 keyframe of the skeleton in it's own starting position (I also let 1 frame pass so it was updated, I don't know if this is actually necessary - I was doing it for another part of my scene that needed it so I thought I'd mention it). The bone_global_pose will be different if it's in any part of an animation (I'm sure you can get it another way but at this point I have no hair left to pull out).