Note that even the standard tcl/adp pair handler - adp_parse_ad_conn_file - does not call doc_return but ns_return directly, because it does it's own version of releasing unused db handles. As you said there are propably numerous places that call ns_return. If you want to change all those you'd have to touch a lot of files ...
What do you think about redefining ns_return with yet another wrapper that appends the charset to the content-type parameter if it is not yet appended (consulting ns_choosecharset and the user's language setting) - would that be too inefficient? It'd propably be the method with the least effort.