It should be possible to validate that each pair of mons has a total of at most 4 moves between them. If that's not possible, it certainly should be possible to check that each individual mon has at most 2 moves (thus giving 4 moves to the fusion).You're right for items. For moves, i don't see how to let player choose as getting moves from only one mon isn't the idea. For base stats, you misunderstood. In your example, you would get 100 hp/def/spD/spA base stats (unless the other mon has higher than 100 bs in one of those stats) and the high attack/speed from the other mon.

If that's how you're handling base stats, most people will probably end up fusing defensive mons with offensive mons, resulting in every mon having high stats all around; I'm not sure if that's ideal. Maybe average the stats of the two mons?