Instead of using “Ctrl-P” to parent the ball to the character’s hand, select the ball and go to the Constraints panel, Add Constraint -> Child Of, select the character armature and then the hand bone as the target. Right click on the Influence slider at the bottom of the constraint and select Insert Keyframe, or hover your mouse over the slider and press “i”. Repeat this process to create a second “Child Of” constraint, except use the other character’s hand bone as the target for this one.
You will have to animate the influence slider so that the ball is no longer influenced by the first thrower’s hand immediately after he throws it. Then, the catcher’s hand should have full influence over the ball the moment he catches it. This video tutorial will demonstrate a similar process. It doesn’t involve two characters, but it’s enough to give you the idea.