I'd like to send as original a message as I can to SpamCop and other places since they don't like munged reports. Currently I'm doing this manually, which is annoying. I note that sa-learn knows how to remove all SA-specific annotations from a message (unwraps MIME, removes headers, etc.). Is that functionality available in any other way?
Yes, it's directly available from the spamassassin command line tool.
man spamassassin:
-d, --remove-markup
Remove SpamAssassin markup (the ``SpamAssassin results'' report, X-Spam-Status headers, etc.) from the mail message. The resulting message, which will be more or less identical to the original, pre-SpamAssassin input, will be output to stdout.
(Note: the message will not be exactly identical; some headers will be reformatted due to some features of the Mail::Internet package, but the body text will be.)