I've thought about this more and the solution I presented above isn't quite sufficient for me. I need something where I get complete control over what goes in the latex source block on a block-by-block basis. In other words, I don't want a user-configurable option like org-format-latex-header plus a list of user-configurable packages in every block.
I could add an option alongside the option I introduced above that tells the execute function to only compose the tex file from the body (btw, this doesn't have to be manual for the user, just define a class and use snippets), but at some point I wonder how much it makes sense to keep adding options to this function since it'll just make it harder to maintain. What do people think? If there's any interest, I'm more than happy to put in the extra time and add this functionality to latex-execute. Otherwise, I'll just advise the function for my own specific needs. I do think there's a real use-case here: namely, complete case-by-case control over the source latex and its output, including export backend dependent things like colors. But, maybe this is just me and the existing functionality is fine with people. Matt