Alternativa correta: A - JOIN. Vejamos o que diz o manual completo do Hibernate (pags 47-47):
"3.4.2. Busca por união externa (Outer Join Fetching)
Se seu banco de dados suporta união externa no estilo ANSI, Oracle ou Sybase, a outer join fetching freqüentemente aumentará o desempenho limitando o número de chamadas (round trips) para e a partir do banco de dados. No entanto, isto ao custo de possivelmente mais trabalho Fluxos Binários (Binary Streams) desempenhado pelo próprio banco de dados. A busca por união externa (outer join fetching) permite um gráfico completo de objetos conectados por associações muitos-para-um, um paramuitos, muitos-para-muitos e um-para-um para serem recuperadas em uma simples instrução SQL SELECT.
A busca por união externa pode ser desabilitada globalmente configurando a propriedade hibernate.max_fetch_depth para 0. Um valor 1 ou maior habilita a busca por união externa para associações um-para-um e muitos-para-um, cujos quais têm sido mapeados com fetch="join"."
Ou seja, quanto usa-se o join em conjunto com o fetch em selects utilizando o Hibernate, garante-se que a estrutura completa de relacionamentos seja carrega em sua memória, de forma a ignorar a estratégia lazy (como diz a questão).
Espero te ajudado!