If you make any animation exist set to be a ‘relative’ timeline instead of an absolute timeline, this will make the ball animate from its dropped location to where the end point in your timeline is set. This will make at least that part smoother. (Absolute timelines are the default, but you can adjust that in the scene inspector in the Animation Timelines Relative checkbox).
This part is a bit trickier, but the basic thing I would do is use the Get / Set Hype API function to animate movement of the ball. Here’s an example using rotation, but the workflow is the same: Rotation: fraction of a degree possible?