The first two vhosts works as expected.
Mais ou menos. Eles compartilham o mesmo ServerName, o que não faz sentido, pois o que é único sobre um vhost é a combinação de port + servername.
O Apache aqui está silenciosamente usando a primeira definição de vhost quando recebe um link ou link . Para todos os outros * .mydomain.fr, ele usará o segundo vhost. Qual é o que você quer, eu acho, mas é explicitamente escrito e propenso a erros de diagnóstico.
However, Odoo must receive the subdomain matching the database, else it won't serve it.
Esse é o propósito de "ProxyPreserveHost On", ele passa o nome usado pelo cliente HTTP até o aplicativo atrás do proxy reverso. Use-o no seu segundo vhost.
Seu terceiro vhost parece bem (ele tem tem o "ProxyPreserveHost On").