De jeito nenhum. EJB não faz, sozinho, conexão ao banco de dados. Enquanto que Hibernate, sozinho, não gerencia a transação de banco e conexões a webservices.
Hibernate é um framework ORM baseado na JPA (especificação). Hibernate é uma das várias implementações da JPA que existem no mercado. Outros exemplos são a OpenJPA e o EclipseLink. Acontece que o Hibernate é o mais utilizado.
O EJB é uma especificação do Java para lidar com coisas complexas. Apesar de ser a JPA quem realiza o acesso ao banco de dados e provê controle de transação, fazer o controle dessas transações somente pela JPA é uma dor de cabeça grande. O EJB gerencia isso muito melhor e no nível do servidor de aplicação, dessa forma, você não precisa se preocupar com sessões, fábrica, estado, cluster, etc. Tudo é gerenciado pelo EJB junto com o servidor. E, caso você precise controlar especificamente determinadas transações, basta configurar o EJB da maneira que precisar.
Além de ser um excelente controle de transação, o EJB também serve para lidar com WebServices e acesso remoto.
Ou seja, o Hibernate não substitui o EJB e vice-versa.