Eu estudei como o componente ACBrNFSe realiza a assinatura e vim fazendo a depuração da rotina de assinatura do módulo de vocês.
O problema ocorre somente na hora de assinar o Lote, os RPS são assinados sem problema nenhum.
Verifiquei que ele adiciona o DTD no começo do XML e depois disso coloca a tag <ns3:EnviarLoteRpsEnvio xmlns:ns3="..."> e o resto do conteúdo;
Depois disso, o componente chama a função para assinar o Lote e a mesma retorna um erro e não consegue assinar.
Eu realizei um script em LUA para conseguir assinar o XML que usa o binário xmlsec1 (que usa a mesma libraria do módulo ACBrOpenSSL) e,
inicialmente, ele também estava encontrando problemas na hora de assinar o Lote, dai fiz alguns experimentos e teve a ideia de substituir a tag raiz:
alterei de <ns3:EnviarLoteRpsEnvio xmlns:ns3="..."> ... </ns3:EnviarLoteRpsEnvio> para <RootNode> ... </RootNode>, mandei assinar e o problema sumiu.
Após assinar, coloquei de volta a tag original, mandei validar pelo site da betha e o mesmo validou minha nota com sucesso.
Já que a tag raiz está fora do contexto da assinatura, ela não influência a validação da mesma, então poderia ser uma tentativa tentar reproduzir isso no módulo de vocês,
quem sabe que o problema seja resolvido para todos.