There's actually a way to do this with one playlist due to the miracle of the undocumented ~mix syntax. Here's what I did:
g=[Rock] ~mix=15,8,W,4,X,2,Y,1,Z ~sort=[Name]
Where:
W = {Rating=>=3 ~sort=[number plays],[Last Played]-d,[date imported]-d ~%=50 ~sort=[random]}
X = {Rating=>=3 ~sort=[number plays]-d,[Last Played],[date imported] ~%=50 ~sort=[random]}
Y = {Rating=1-2 ~sort=[number plays],[Last Played]-d,[date imported]-d ~%=50 ~sort=[random]}
Z = {Rating=1-2 ~sort=[number plays]-d,[Last Played],[date imported] ~%=50 ~sort=[random]}
Now, the fact that it more closely resembles an algebra equation rather than a smartlist is probably a good sign that this one isn't for everyone. In plain english, here's what it does:
1) I get 15 tracks of "Rock" Music that will be sorted by song title
2) 8 tracks will be randomly selected from the least played half of my "favorties," which have 3 or more stars
3) 4 tracks will be randomly selected from the most played half of my "favorties," which have 3 or more stars
4) 2 tracks will be randomly selected from the least played half of my "non favorties," which have 1-2 stars
5) 1 tracks will be randomly selected from the most played half of my "non favorties," which have 1-2 stars
There's an extra wrinkle here in that I want the playlist to biforcate my favorites and non favorites too. That's just something that's relevant to how my music is organized; it isn't strictly necessary to fulfill the "challenge." There's also some complexity due to the tiebreakers I threw in there to decide what happens when songs past the 50% threshold all have the same number of spins. All of this could be stripped out if you like, but the above syntax should at least point you in the right direction.
Note that if you're gonna cut and paste with the above syntax, be very careful you get the spacing right when you're pasting in the variables -- there can't be any spaces between the commas or else it won't work.
Now... was there a prize associated with the challenge?
j/k
Thanks for raising the question, UnknownID. It got me thinking, and I believe I'm going to enjoy the results...