Bom, camaradas, encontrei uma solução, mas não é a mais adequada.
Como alterei a estrutura das classes, colocando Cliente e Funcionario como classes filhas de Pessoa, precisei modificar o relacionamento.
Uma vez que a herança permite que a classe filha herde todos os atributos da classe pai, métodos e afins (com algumas ressalvas), removi o atributo Pessoa, cuja relação era OneToOne das classes filhas.
Ao invés disto, acrescentei a keyword extends e indiquei a superclasse Pessoa (Cliente extends Pessoa).
Para tanto, precisei remover o Id de ambas as filhas e colocar a anotação
@Inheritance(strategy=InheritanceType.ONE_PER_CLASS)
E a estratégia do @GeneratedValue, do atributo Id, de Pessoa, do default para strategy=GenerationType.TABLE.
Após estas alterações, consigo fazer a busca através de ID, nome ou CPF do cliente (E do funcionário).
Porém, aí vão algumas ressalvas:
1 - O Hibernate considera que todos os atributos de uma classe Pai deverá ser colocado em uma classe Filho. Ou seja, minha tabela Cliente, que antes possuía 4 colunas (ID, ocupacao, renda e pessoa_id), agora conta com estes, mais as colunas de pessoa (nome, dtNasc, nmMae, nmPai, nacionalidade, naturalidade, etc).
2 - Se a estratégia for JOINED, então, o hibernate inverte as coisas e, ainda, ignora tabelas para as classes filhas. Todas as colunas de Cliente e Funcionario são associadas à Pessoa. Uma coluna adicional é criada, com o nome “DTYPE” e, recebe o “nome” da classe à qual cada inserção está associada ('Pessoa", quando insere Pessoa, 'Cliente" quando é um cliente e ‘Funcionario’, quando um funcionario). Além disto, se os atributos forem marcados com a anotação @Column(nullable=false), nas classes filhas, há que se prever um valor que os possa preencher, caso não sejam comuns à todas as classes filhas. Por exemplo, Funcionario possui um atributo Date chamado dtAdm, não nulo, pois indica quando ele foi contratado. Cliente não é admitido para a empresa, logo, não possui este campo.
Enfim, irei continuar a pesquisar o Criteria, sei que tudo o que se pode fazer com SQL (mesmo um outer left rigth inner join de uma só tabela) é possível com criteria.
Por hora, estou satisfeito com essa solução gambiarrística.