I will try to provide an example to assist here. Hopefully this gets you up and running.
Let's say your multi question is Q1 with the 9 features.
Now create a constructed list and let's call it FeaturesConList. This will use the parent list used at Q1. It will look like this ...
AIC(Q1)
Randomize()
ListMax(2)
This constructed list will tell us which of the 9 features the respondent will answer.
Now you have a set of questions for each of the 9 options. Let's assume they look something like this ...
Feature 1: Q2-Q3
Feature 2: Q4-Q5
Feature 3: Q6-Q7
Feature 4: Q8-Q9
Feature 5: Q10-Q11
Feature 6: Q12-Q13
Feature 7: Q14-Q15
Feature 8: Q16-Q17
Feature 9: Q18-Q19
Now go to Randomize | Blocks | Add Set and enter in each of the 9 blocks (Q2-Q3, Q4-Q5, ..., Q18-Q19). Select FeaturesConList as the constructed list. Hit OK and save. The number of blocks entered should be 9 to match the 9 features.
Now the way this should work, is the respondent selects as many features as necessary at Q1, then your constructed list will randomly select 2 of those features (it could be one feature if they only selected one feature at Q1). You should see only 2 blocks of questions shown maximum to the respondent based on this setup.
Note: No skips required here. The randomised blocks are doing the dirty work for you. Pretty cool hey.
Try it out ...
Let me know how you go.