El punto (2) yo lo veo extremadamente fácil, que claro, si lo quieres hacer con consultas a la base de datos entonces ya no es tan simple.
Es decir, ¿si antes de cargar todas las combinaciones en la base de datos revisas si hay duplicados no sería mejor?
Vamos, que si agregas de a uno por uno, y luego para validar repeticiones vas a la base de datos ahí ya tienes un problema de diseño: y hasta de sentido común.
Usando estructuras simples:
Código PHP:
Ver original$tabla = [
[1, 2, 3, 4],
[9, 6, 5, 8],
/* ... */
];
Ahora, ya teniendo una lista de listas, procedes a ordenar de manera natural cada sublista, de ahí puedes convertirlo a una cadena de texto.
Código PHP:
Ver original$lista = [
'1.2.3.4',
'5.6.8.9',
/* ... */
];
La solución se explica sola: como ya has reducido la lista de listas a una lista más simple entonces ahí aplicas array_unique() para descartar duplicados, etc.
En fin, hay muchas forma de hacer esto y la mejor forma es hacerlo en memoria.
No intentes resolver un problema estructural con base de datos.