so the big reason why I don't think this is working for you is because Controller resets move speed for the player based on the user input. To fix this without doing a large rewrite, just change @normal_speed (and Config::RUN_SPEED and Config::SNEAK_SPEED in the case of the player) to what you need them to be, then, you wont have to fight Blizz-ABS each frame. @normal_speed is specific to each character, so you don't have to worry about it affecting characters without the state.
EDIT: Also, you should be doing this with Map_Battler, not Game_Character.