Ok so after battling with blender and animations for many weeks, im finally starting to get better.
The problem i am/was having is that even if the animation is looped. it still jerky when the loop happens.
For instance look at the leg movement in this demo:
You can see it jerks the leg at some point and it feels choppy/jerky and not natural when its looped.
I have set the foot bone to slide linearly along the ground once its grounded but as soon it leave ground and lifts off its jerky.
I made many attempts to redo animation over and over again, same result.
Now the key here was to check closely the graph editor in blender and see what the keyframes are doing. I know for starters its confusing at first but once you work in it for a while its quite helpful to diagnose.
First turn on normalization/auto normalization (blue buttons) so that its easier to look at graph.
Then look at places where in linear movement there are points. These points are making the jerky movement. One thing you can do is to remove them and make them ease in and out:

Like in my new animation:

And the result is obvious imo:
Feels alot of smoother. The upper part of the body needs more work. My focus here was mostly on legwork.
Now that im on somewhat right track i feel better about myself to continue exploring this.