I'll weigh in, but perhaps no one will be satisfied, as there is no definitive way to choose between A and B. Given a choice between "each other" and "one another," I'd probably go with "one another," since some people find this better for referring to relationships among multiple things (not just two). However, I have no indication that the GMAT relies on this as a rule. On the contrary, it's common to see SC questions that split between two interchangeable terms as a "fake-out" split, when something else is really at issue.
As for "have" vs. "had," I would personally prefer "have." I would use "had" only if we were describing someone's belief from the past (e.g. "Darwin realized that humans and apes had a common ancestry"). Since there's no need to clarify the order of things here, past perfect doesn't accomplish anything. Does that make "had" definitively wrong? Not really. It partly comes down to the ambiguous meaning of the word "ancestry." If it's meant to refer to your line of descent, as in a family tree, it makes sense to think of that as present. If it's meant to refer to the process by which you came about, then that's more clearly situated in the past only, and so one could argue that "have" doesn't make sense.
So what would happen if we clarified by replacing "ancestry" with "ancestor"? Even then, either "had" or "have" could be appropriate. With "had," we'd be emphasizing that at one time, this ancestor existed. With "have," we'd be emphasizing that each breed can still trace back to this common ancestor. This flexibility is common with perfect tenses. Their point is to allow for emphasis and clarity. In this case, the sequence of events doesn't need clarifying (we know that the ancestor existed before modern dogs), so there's no way to say that one version must be used.