So I like the idea of the breeding being a pokestop function similar to how Team Rocket operates. Perhaps it can sometimes pop up, and then you and your friend have to leave the same pokemon (of the opposite gender) in the pokestop.
Then the player has to walk a certain distance IRL before you get a notification that announces that your egg is ready to be picked up. Depending on the rarity of pokemon, the distance that the player has to walk can be 5km, 7km, or 10km.
Then the pokemon the player chose to breed would go into your inventory to hatch and be like a normal egg of that pokemon.
The limits could be that the pokemon you hatch from the breeding cannot be traded to anyone. If you hatch one, it is specific only to you.
You can only leave one egg for breeding at a time, and can only put another egg for breeding when you’ve picked up your previous one.
Additionally, you could only be able to put a pokemon for breeding once per day. So if you’ve already placed a pokemon for breeding and then gone and walked the necessary distance for there to be an egg, then afterward gone and picked up the egg, even though there might be another breeding event at a pokestop, you won’t be able to leave a pokemon there.
Lastly, you wouldn’t be able to breed Legendary or Mythical pokemon. I would say it’s up for debate as to whether or not you could breed regionals, but personally I think that you should be able to breed them because you wouldn’t be able to trade what you breed.