In the draw for the round of 16 of the Champions League football tournament, the eight group winners are seeded, and the eight group runners-up are unseeded. The seeded teams are drawn against the unseeded teams, with the seeded teams hosting the second leg. Teams from the same group or the same association cannot be drawn against each other.
Unfortunately, this is not the description of an algorithm. I have seen draws, but it didn't make it clear to me what exactly their mechanism is. So, to translate it to a more combinatorial problem.
Suppose that we are given a bipartite graph that contains at least one perfect matching. What is the algorithm that they use to pick a perfect matching?
This related question (mysteriously also asked in December!) seems to suppose implicit that the generated distribution is uniform on the matchings. This is very unlikely from the way the draws are conducted, where teams are drawn against each other from urns.
See the answers of "Nom Prenom" in december 2012, in the thread you mention above (and the answers to the different people who wrotes in this thread, including somebody named Igor). Teams pairing are selected one after the other: a team which finished second is selected first, then all valid opponents who finished first (valid in the sense that they have not been selected yet, and if selected, this choice will not lead to an unfeasible pairing for the remaining teams, this is precomputed by a computer) are placed in a bowl and one is selected. Doing so indeed leads to a NON-UNIFORM probability of draws. In particular all probabilities of team pairing that are given on the web are incorrect, reproduced blindly. To get the right probability, you need to emulate all possible draws and do the adequate counting. But this is doable (40 sec on my computer to get the probability of each possible draw and order in which it is generated).