If I understand your situation correctly, you have two identical structures of different types that you want to use interchangeably. In this case, all you need is to define implicit casts. So, in one definition of Donkey, define a cast to and from the other Donkey.
If you do not have control over the two Donkeys or you would prefer to keep the classes decoupled, then adding a third Donkey class would make more sense. In this class, you would define the casts from the other Donkeys.
Depending on the details of your situation, you should try to use just one of the Donkeys as much as you can throughout your project, and only use the other when necessary.