This isn't a particularly clever algorithm, but it's polynomial, and I think it should work. Take any set. For each element in this set, count the number of remaining sets which do not contain it and remember which sets contain it. Pick the element with the highest count, and redo the counts for the remaining elements, ignoring the sets which lack the element you just chose. Continue until all remaining sets have been eliminated from consideration.
Example: let $A = \{1, 2, 3\}$, $B = \{2, 3, 4\}$, $C = \{2, 4, 6\}$, and $D = \{1, 3, 5\}$. Then we have counts $c_1 = 2$, $c_2 = 1$, and $c_3 = 1$. We choose 1, eliminating sets $B$ and $C$ which did not contain it; redoing the counts, we have $c_2 = 1$ and $c_3 = 0$. We choose 2 as the next element, and remove $D$ from consideration. We are now done, and our "fingerprint" set is $\{1, 2\}$. EDIT: to complete the example, you should get the other fingerprint sets to come out as $\{3, 4\}$, $\{6\}$, and $\{5\}$.
I haven't given this a lot of thought, but intuitively, it seems like it should work. The idea is to greedily take as the next element of the fingerprint set the item which covers the most uncovered sets.