Indo um pouco mais a fundo, eu percebi duas coisas: Enquanto o novo formato de banco de dados é SQLite3, o antigo era algum armazenamento binário que armazena VCARDs, onde claramente legível. Então eu criei um pequeno snippet PHP:
#!/usr/bin/php
<?php
# -=[ UserConf ]=-
$evodb = 'addressbook.db'; // (path and) name to the old address database
$name = 'business'; // name of the address book (used as filename)
$separate_vcards = FALSE; // if TRUE, each VCARD will go to a separate file
#-=[ Do not touch below lines ]=-
$re_vcard = '!(BEGIN:VCARD.*?END:VCARD)!ims';
$evo = file_get_contents($evodb);
preg_match_all($re_vcard,$evo,$vcards);
$cards = count($vcards[1]);
$new = '';
for ($i=0;$i<$cards;++$i) {
if ($separate_vcards) {
file_put_contents("${name}_${i}.vcf",$vcards[1][$i]);
} else {
$new .= $vcards[1][$i] . "\n\n";
}
}
if (!$separate_vcards) file_put_contents("${name}.vcf",$new);
?>
Isso não é 100% perfeito, mas é melhor do que perder todos esses dados. O script é executado no banco de dados de estilo antigo e tenta buscar todos os VCARDs armazenados nele. Estes são exportados para arquivos separados (cada VCARD em um arquivo, se $ separate_vcards = TRUE), ou para uma coleção (caso contrário).
Como estes devem ser arquivos de texto simples, é possível verificá-los e corrigi-los facilmente (quebras de linha, lixo binário) - e finalmente usar o Evolutions Import-Feature (encontrado no menu "Arquivo") para importar os dados ("arquivo único") em um livro de endereços existente (crie um vazio antes, se você quiser um novo livro de endereços).
Para mim, isso restaurou cerca de 90% dos meus endereços. Para os 10% restantes, alguns onde foram misturados ou quebrados (lembre-se, até mesmo o formato antigo era binário - e o trecho apenas funciona no "modo ASCII").
Espero que isso ajude alguém (se for o caso, não esqueça de votar nessa solução).