Bueno. Al final unos amigos me han acabado ayudando.
Dejo por aquí la solución que hallamos por si le sirve a más gente.
Código PHP:
// Añadimos la librería nuSOAP. Que es la que utilizaremos.
require_once("nusoap/lib/nusoap.php");
// Indicamos donde está el WSDL en nuestro disco o ruta externa.
$wsdl = "./rutadelfichero.WSDL";
// Instanciamos la clase.
$oSoapClient = new nusoap_client($wsdl, true);
// Después de instanciar la clase, debemos asignar los siguientes namespaces.
$oSoapClient->namespaces = array(
'soapenv' => "http://schemas.xmlsoap.org/soap/envelope/",
'tg' => "http://www.rutadeltg.com/xml/tgweb",
'asi' => "http://rutadelasi/asi/"
);
/* si el WS no está hecho en PHP podría rechazar los métodos implementados.
Para evitar este problema le mandamos el XML directamente. */
$cadena = '<asi:etiqueta><tg:Bebidas><tg:Refresco>LIMON</tg:Refresco></tg:Bebidas></asi:etiqueta>';
// El último parámetro es para evitar que pille el NameSpace por defecto del NuSOAP, que es http://tempuri.org
$respuesta = $oSoapClient->call("bebidas", $cadena, "");
// Miramos si hubo algún error.
if ($oSoapClient->getError())
{
echo "<br/><br/>Error al llamar el metodo<br/> ".$oSoapClient->getError();
}
else
{
// La carga fue bien y tenemos datos en $respuesta.
}
Edito para añadir que esta solución lo que hace es "pasar" de la comunicación mediante métodos al WS en SOAP y le enviamos directamente el XML. De esa forma sabíamos que iba a funcionar sí o sí.
No es elegante, pero funciona.