tudo bem.
a questão é: o quão raro isso vai ser?
pq se vc tem uma modelagem explicita com duas classes diferentes que extendem Pessoa ( assumindo Pessoa ser, por exemplo, abstract ), vc vai precisar de uma terceira classe que seja a união dos dois campos.
E perceba que um FuncionarioCliente nesse caso É UM Cliente e É UM Funcionario. Como ja não permite herança multipla a unica possibilidade é que Funcionario e Cliente sejam interfaces para uma das 3 classes.
abstract class Pessoa {}
interface Cliente {}
interface Funcionario {}
class ClienteImpl implements Cliente extends Pessoa {}
class FuncionarioImpl implements Funcionario extends Pessoa {}
class ClienteFuncionarioImpl implements Cliente, Funcionario extends Pessoa {}
Pessoa p = new ClienteFuncionarioImpl(); // ok
Cliente c = new ClienteFuncionarioImpl(); // ok
Funcionario f = new ClienteFuncionarioImpl(); //ok
Cliente c = new ClienteImpl(); // ok
Funcionario f = new ClienteImpl(); // NAO PODE
olha a confusão que é esse modelo de dados se vc quiser tipagem forte.
vc vai ter que fazer algo como
pessoa.isCliente()
pessoa.isFuncionario()
Se isso acontece em 1% ou menos dos casos acredite, vc pode assumir dois cadastros diferentes que o seu modelo de dados, classes, etc, ficarão muito mais simples.
De novo, eu não sou o dono da verdade, mas existem implicações importantes nessa modelagem. A minha experiencia diz para evitar.