I have made multiple observations:
1) Typing unicode to mwscript eval.php does not work in WMF
2) This particular message has existed in uk.json since April
3) Other messages in the same file seem to work on random testing
4) MessageCache thinks the message does not exist:
mwscript maintenance/eval.php --wiki=ukwiki
> var_dump( MessageCache::singleton()->getMsgFromNamespace( 'Visualeditor-ca-editsource', 'uk' ) );
bool(false)

Because of 1) I was not able to test whether calling MessageCache::replace would have fixed that.

5) MessageCache can find the message if instructed manually to load messages directly from the database:
mwscript maintenance/eval.php --wiki=ukwiki
var_dump( MessageCache::singleton()->loadFromDB( 'uk' ) );
  ..
  ["Visualeditor-ca-editsource"]=>
  string(28) " Редагувати код"
  ..

6) Localisation cache returns the ru version:
> var_dump( $wgLang->getLocalisationCache()->getSubItem( 'uk', 'messages', 'visualeditor-ca-editsource' ) );
string(33) "Править викитекст"

7) I cannot reproduce this issue locally

8) LC issue is possibly caused by incorrect fallback merging, because L10nupdate contains update for ru, but not for uk (because the translation is already up to date for uk):
nikerabbit@tin:/var/lib/l10nupdate/cache-1.24wmf12$ grep visualeditor-ca-editsource *-ru.* *-uk.*
Binary file l10n_cache-ru.cdb matches
l10nupdate-ru.json:    "visualeditor-ca-editsource": "\u041f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0438\u043a\u0438\u0442\u0435\u043a\u0441\u0442",
l10nupdate-ru.json:    "visualeditor-ca-editsource-section": "\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0438\u043a\u0438\u0442\u0435\u043a\u0441\u0442",
Binary file l10n_cache-uk.cdb matches

9) Something fishy with message cache:
mwscript maintenance/eval.php --wiki=ukwiki
> var_dump( MessageCache::singleton() );
object(MessageCache)#108 (8) {
  ...
  ["mDisable":protected]=>
  bool(false)
  ..
}

mwscript maintenance/eval.php --wiki=ukwiki
> var_dump( MessageCache::singleton()->getAllMessageKeys( 'uk' ) );
NULL
> var_dump( MessageCache::singleton()->load( 'uk' ) );
bool(true)

> var_dump( MessageCache::singleton() );
object(MessageCache)#108 (8) {
  ["mCache":protected]=>
  bool(false)
  ["mDisable":protected]=>
  bool(true)
  ..
  ["mLoadedLanguages":protected]=>
  array(0) {
  }
  ..
}


My conclusions so far are that there seems to be at least two separate issues here:
I) MessageCache is failing to load its cache
II) Localisation cache returns ru when uk exists
III) (bonus) Unicode does not work on eval.php at WMF

For I) I would like other people to inspect why that is happening.
For II) My observation in 8 is a good starting point for my investigations for someone else while I continue my vacation. This might be specific to the way WMF runs l10n update.
For III) It would be nice for someone to file a separate bug.