As you no doubt realize, the actual 1-16 rankings are built upon divisional considerations. Thus, the divisions themselves are woven into the fabric of the rankings. That’s not really an issue in your question, I just thought I’d point it out.
To get four drawings of a set of 10 within 16 possibilities would be:
(10/16) * (9/15) * (8/14) * (7/13) = (10987) / (16151413) = 5040 / 43680 = 11.5%
That’s an 11.5% chance that the first division you run through the trial will have no team seeded in the top 6. Hmmm, with three other divisions, it gets too confusing for me. So let me tackle this from a different viewpoint.
What is the chance that all four division winners will be in the top 6?
That seems easier to compute. The basic question is, where do the top 6 go? Since all 16 are to be randomly distributed, the top 6 are randomly distributed as well. Thus we can completely ignore the bottom 10 altogether.
It doesn’t matter where the first goes. The second now has 15 possible slots, 3 of which are the same division as the first. The second has 14, the third has 13, etcetera.
So you can simply generate 6 random numbers between 1 and 16. Assume the East is 1-4, the North 5-8, the South 9-12, and the West 13-16. Allow no duplicates, and count up the number of times you get bad divisions.
I wrote a simulation in Excel so that anybody can run it. Follow these steps:
- Open Excel
- Tools => Macro => Visual Basic Editor
- Insert => Module
- Copy and paste the code at the bottom of ths post to that new, blank module
- Go to the Immediate Window (View => Immediate Window)
- Type “test” (without the quotes) and hit enter.
The results I get are that all is good in the world 35% of the time, and 65% of the time you get at least one scrub division. (57% you get exactly 1, 8% you get exactly 2.)
Where did I go wrong? Or am I right and the 44% is wrong? 
Option Explicit
Private mintTopSix(1 To 6) As Integer
Private mblnDivision(1 To 4) As Boolean
Public Function Test()
Dim i As Long
Dim lngTrial As Long
Dim lngTrials As Long
Dim intNext As Integer
Dim intFailures As Integer
Dim lngStats(0 To 4) As Long
Randomize
lngTrials = 100000
For lngTrial = 1 To lngTrials
For i = 1 To 4
mblnDivision(i) = False
Next
mintTopSix(1) = Int(16 * Rnd + 1)
For i = 2 To 6
intNext = 0
Do While StillLooking(intNext, i)
intNext = Int(16 * Rnd + 1)
Loop
mblnDivision(((intNext - 1) \ 4) + 1) = True
mintTopSix(i) = intNext
Next
intFailures = 0
For i = 1 To 4
If Not mblnDivision(i) Then intFailures = intFailures + 1
Next
lngStats(intFailures) = lngStats(intFailures) + 1
Next
Debug.Print "Total Trials: " & lngTrials
For i = 0 To 4
Debug.Print "# of times with " & i & " bad divisions: " & lngStats(i) & " (" & Int(lngStats(i) / lngTrials * 10000) / 100 & "%)"
Next
End Function
Public Function StillLooking(pintNext As Integer, plngCurrent As Long) As Boolean
Dim i As Long
If pintNext = 0 Then
StillLooking = True
Else
StillLooking = False
For i = 1 To plngCurrent - 1
If pintNext = mintTopSix(i) Then StillLooking = True
Next
End If
End Function