Specific restrictions for specific teams is not something I have tried to schedule for, so I can't say any of what follows is tried and tested.
Either way, I think you risk finding uncompletable schedules if you intend filling them up one matchup at a time. But a lot will depend on how hard the problem is, if it is easy with millions of possible solutions, then it may work. At the other end of the spectrum, if the restrictions are sufficient that there are very few possible solutions, then you may have to resort to an exhaustive search of all possible schedules until you find one that works.
Once approach might be to first find a schedule for the subset of teams with special restrictions. At least this would establish if the user has input an impossible set of restrictions, but if successful you could then try to fit the other teams around this initial schedule. And maybe repeat the process a number of times starting from different initial schedules.
Most of the algorithms I have used, have been trying to optimize a set of non-specific restrictions, for example: it would be nice that no team played twice in one week, it would be nice if a team had at least one matchup at each location, etc... These are then expressed as a criterion to be optimized using an iterative improvement approach from an initial random schedule. This might work for you, but I think you would need a weighting scheme to make sure that specific restrictions were given priority. Assuming of course, that you also have these same types of non-specific restriction.
Does that help?