After a lot of tinkering with code and Sonic animations, I am finally happy with the controls just enough to put them aside while I work on other aspects within the game. In the previous version, some of the animations were not ending or starting when they were supposed to but now the animations and controls feel much more responsive.
To accomplish this, I increased the Gravity parameter for a few of the player inputs. By default within Unity, controls that are registered as inputs for the game sit at the value 0 and either increase or decrease to the values 1 or -1 respectively when pressing their keys. By greatly increasing the Gravity parameter on some of the inputs, it allows the values to quickly snap back to 0 when the key is no longer being pressed so that any events that are waiting for the button to be released, the action value being set to 0, can take place immediately.
A feature I learned that Unity has is that it not only provides an animation transition tool but also a buffer range between animations so that if you want an animation to transition to another, you can adjust how and when it does by using this tool. When I was creating my animation transitions, Unity created a small buffer between them which I simply reduced to zero so that when one animation ended, it instantly transitioned to any others that it was linked to. I only noticed this buffer because most the animations I have put together within Unity have frames that cycle quickly but when I setup the jump animation when Sonic is idle, which is slower than when sonic is traveling, I slowed the jump animation so much that this transition buffer became longer than the time between frames.