Você pode recolher seus 2 comandos exec em um único comando como:
exec tcsh -c zsh
Você pode atualizar o ambiente em seu processo zsh atual usando:
eval $(env -i tcsh -c env)
Usar env -i faria com que o seguinte comando fosse executado com um ambiente vazio. Isso executa o tcsh para processar os arquivos de inicialização. A opção -c para tcsh executa outra cópia de env , mas desta vez sem um comando, apenas imprime o conteúdo atual do ambiente definido pelo tcsh. Em seguida, o eval $(...) faz com que o zsh analise essa saída.
No meu teste, o uso de env -i é necessário para evitar que o zsh tente definir variáveis de ambiente que foram definidas por ele mesmo, incluindo a variável _ , que é somente leitura. Essa tentativa fez com que o eval falhasse sem processar pelo menos parte da saída.