Ho dovuto farlo una volta... testo multilingue per alcune tabelle... non so se ho trovato la soluzione migliore ma quello che ho fatto è stato avere la tabella con le informazioni indipendenti dalla lingua e poi una tabella figlio con tutte le campi multilingue. Era richiesto almeno un record nella tabella figlio, per la lingua predefinita; più lingue potrebbero essere aggiunte in seguito.
Su Hibernate puoi mappare le informazioni dalle tabelle figlio come una mappa e ottenere le informazioni per la lingua che desideri, implementando il fallback sul tuo POJO come hai detto. Puoi avere diversi getter per i campi multilingue, che internamente chiamano il metodo di fallback per ottenere l'oggetto figlio appropriato per la lingua richiesta e quindi restituiscono semplicemente il campo richiesto.
Questo approccio utilizza più tabelle (una tabella in più per ogni tabella che necessita di informazioni multilingue) ma le prestazioni sono molto migliori, così come la manutenzione penso...