Python fusionando dos listas con todas las permutaciones posibles

Estoy tratando de encontrar la mejor manera de fusionar dos listas en todas las combinaciones posibles. Entonces, si empiezo con dos listas como esta:

list1 = [1, 2]
list2 = [3, 4]

La lista resultante se verá así:

[[[1,3], [2,4]], [[1,4], [2,3]]]

Es decir, básicamente produce una lista de listas, con todas las combinaciones potenciales entre los dos.

He estado trabajando a través de itertools, que estoy bastante seguro de que tiene la respuesta, pero no puedo encontrar una manera de hacerlo actuar de esta manera. Lo más cerca que vine fue:

list1 = [1, 2, 3, 4]
list2 = [5, 6, 7, 8]
print list(itertools.product(list1, list2))

Que produjo:

[(1, 5), (1, 6), (1, 7), (1, 8), (2, 5), (2, 6), (2, 7), (2, 8), (3, 5), (3, 6), (3, 7), (3, 8), (4, 5), (4, 6), (4, 7), (4, 8)]

Por lo tanto, hace todas las combinaciones posibles de elementos en cada lista, pero no todas las listas resultantes posibles. ¿Cómo hago para que eso suceda?

EDITAR: El objetivo final es poder procesar individualmente cada lista para determinar la eficiencia (los datos reales con los que estoy trabajando son más complejos). Entonces, en el ejemplo original anterior, funcionaría de la siguiente manera:

list1 = [1, 2]
list2 = [3, 4]

Get first merged list: [[1,3], [2, 4]]
    Do stuff with this list
Get second merged list: [[1,4], [2, 3]]
    Do stuff with this list

Si obtuve el resultado de "lista de listas de listas" que describí anteriormente, entonces podría ponerlo en un bucle for y procesarlo. Otras formas de salida funcionarían, pero parece ser la más simple para trabajar.

Respuestas a la pregunta(7)

Su respuesta a la pregunta