This won't answer your question directly, but it may steer you in a different direction that ultimately may be more satisfying for your QTP experience.
Don't use checkpoints at all. I haven't used them since QTP 8.0 and I've never missed them.
Write your own. Use GetROProperty, GetCellData, etc., to get values you want to verify. Store your expected values in your local DataTable. Compare the value you got to the stored expected value with an If..Then and use Reporter.ReportEvent statements to send customized pass/fail messages to your test log.
Once you get that basic framework set up, you can expand on it. I create pass/fail functions that write to the test log and also to a .txt file that I can then distribute to any interested party. These functions also count the passes and fails and track some other basic data.
Once you have all this, or even part of it, then sharing your homemade checkpoints is as easy as encapsulating what you want to verify into its own separate function or reusable action and then calling it from wherever you want.
My test cases are all extremely easy to maintain. I can switch them on and off as easily as scanning through the DataTable and entering or deleting a value in the first column (if that column is blank, the test is skipped). I can maintain them by scanning the same DataTable and editing the expected results, any time the devs do something that requires me to update some test cases.
It's a bit more work to create them, but way less work to maintain them, and my results logs have much more useful messages since I can customize every pass/fail message as I see fit.
Sorry if that's more answer than what you're looking for, but this approach has been magical for me and for anyone else I know of who's implemented it.