Puedes duplicar la tabla y superponerla con
z-index (+ position). trabajando con el background-color dinamico a la tabla de abajo e incluyendo solo el contenido en la tabla de arriba, sin background.
Luego das opacity a la tabla de abajo.
Si esto es mucho lio tal vez puedas trabajar con
background-image: miImagen.png; para tus fondos de celda, fila y/o tabla, dando la opacidad deseada a la imagen. Con esto lograrás evitar el uso de opacity. Pero deberás cambiar el background-image usando javascript.
Bueno, espero te sirva, por lo menos yo no he encontrado el modo de que los hijos del elemento al que fue asignado opacity dejen de heredar esta propiedad.
Saludos!