de-dupe using a deep equality function to prevent different key orderings from affecting the de-dupe