Yes, this is a tricky problem. <span lang="es">blah</span> is the best correct way to mark up text that is meant to be in a specific language, and such tags are not broken by the HTML editor. The proper solution for this bug is to mark up text that way.
However, like Petr said, there will be confusion with our multilang implementation, which uses the same tag. (Note that the <lang lang="es"></lang> form is obsolete and should not be used at all, we support it only for backward compatibility). As above, I think this tag makes good sense to use for this purpose so that when those texts end up in non-filtered circumstances they still work.
So we need something else to distinguish multilang text from other normal text that may contain multiple languages.
Should we perhaps add a class to one of them?
<span lang="en" class="multi">
<span lang="en" class="nonmulti"> ?