Hmm, no answers :) I believe the solution may be to use libpng but I haven't tried it yet. I'll mark this as the accepted answer for now, but if anyone can offer a good tip I'll gladly change it over!
Thanks.
Edit:
I ended up hacking apart https://github.com/pornel/pngquant to get it to accept CGImageRefs, and save PNG-8 files. It wasn't pretty. In the end, I actually switched to GIF (kUTTypeGIF
) which ran a lot faster in my tests.