I'm not sure about the code you currently have but if all else fails I'd suggest lerping a velocity Vector3 with global_transform.basis.xform(direction)
like this.
var velocity : Vector3
func _process(delta):
var local_z_movement = Input.get_action_strength("move_forward") - Input.get_action_strength("move_backward")
var local_x_movement = Input.get_action_strength("move_left") - Input.get_action_strength("move_right")
var intended_velocity = global_transform.basis.xform(Vector3(local_x_movement, 0, local_z_movement)
velocity = lerp(velocity, intended_velocity, delta)
move_and_slide(velocity)