One approach that hasn’t been mentioned so far is to set a multilingual item’s language to "en", and to enclose all non-English components in `<span class="nocase"> ... </span>` tags. This will work with standard CSL style files (no need for modifications). However, since it merely prevents case conversion without setting a language, it does not solve the hyphenation issue.