I think you are on the right track. I think you might be going just a ball too far though.
As it is now, if you foul you lose a ball.
What you are proposing is if you foul you not only lose a ball, but your opponent also gains one.
Why not split the difference, and have your opponent gain a ball if you foul?
This would keep the game moving along, but not cost a player 2 balls every time they foul. A two ball penalty is just too much in my book.
The one thing it encourages is a player shooting in his opponent's hall to gain a ball, that changes the game strategy IMO. Sure you can make a rule that all balls pocketed by opponent comes out but it makes things worse.
I think if you just reduce amount of balls needed to win when opponent fouls and not transfer balls, game remains less messy and easier to keep track of.
Example, in beginning of game both need 8, player a fouls, player b need 7 now, player a fouls again, player b needs 6, and so on. Say both players need 1 ball, then if one fouls game over, you still can scratch behind it to prevent the win, but only cost you if you need less than 8. Example
player a needs 1 ball, player b needs 5, player a shoots and hang a ball, player b scratches behind it so it comes out, and player b has to go to 6 now, player a still needs 1.
bottom line never any player will need more than 8. They can take intentional as much as they want, but they know they will have much less chance of wining with a game of say 11-8 vs a game of 8-5!
Still all other rules in effect ob or cb has to hit a rail, three fouls in a raw loss of game.
I do like the idea of larger pocket, or better yet make a rule if a ball comes withing a range of the pocket it is good ball to keep, proximity pool, like the $100 trick shot.