Thanks for the feedback! I tried solving the character snapping, but due to time constraints I had to move on to other stuff. If I look into fleshing this out, I'll definitely look into solving that. Thank you :)
Probably not much use now but I had a similar problem and my solution might work for you too - I checked the rigidbody's velocity and only updated the character rotation if the velocity was over a certain threshold (0.1f or similar, I think)