CiviContribute/CiviCRM overrides content entered into a custom field each time a donation is made
It sounds like your custom fields are on the contact record. If you create custom fields on the contribution instead then you avoid the problem.