Me contesto solo.
Lo mejor es usar JNDI al igual que en los clientes, y si usas jboss (como yo) crear el fichero jboss.xml en el META-INF del proyecto EJB, con los nombres que se desean usar para cada uno de los beans.
algo así:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 2.4//EN" "http://www.jboss.org/j2ee/dtd/jboss_2_4.dtd">
<jboss>
<enterprise-beans>
<session>
<ejb-name>A</ejb-name>
<jndi-name>com.pepe.A</jndi-name>
</session>
<session>
<ejb-name>B</ejb-name>
<jndi-name>com.pepe.B</jndi-name>
</session>
</enterprise-beans>
</jboss>
y luego para llamar de uno al otro hacerlo normalmente con jndi con el InitialContext por defecto (ya que estamos en el mismo contenedor)
Context ctx = new InitialContext();
ARemote rem = (ARemote)ctx.lookup("com.pepe.A"); //acá lo llamamos como si fuera un class.forName! (ARemote es la interfaz remota del bean A)
y listo luego se pueden hacer las llamadas como siempre