Internamente o JPA pega o valor do retorno do método XXXEnum.ordinal(). Como você não consegue sobrescrever esse método, terá que usar o ordinal do Enum, que é o sequencial da ordem dos valores.
O mesmo vale para o EnumType.STRING que pega retorno do método XXXEnum.name().
O que você pode fazer, só que assim seu código terá que ser especifico para a implementação JPA, que é criar um UserType (no caso do Hibernate) para salvar esse enum.
Que eu conheça não. Mas tem um livro de receitas bem bom no site do hibernate para solucionar essas questões. Tem vários itens sobre enums e pseudo-enums.
o hibernate fornece a interface usertype que permite vc criar seus próprios tipos, ou seja, um converter que é executado quando vc le ou grava do banco: