My view of university education (having an MSc, a separate BSc, and a PhD) has always been that up until MSc (or until BSc, that very much depends on the country and on the followed traditions of education) the point is to get a fairly diverse _introduction_ into as many related [to your main subject] topics as possible, from people who are somewhat knowledgeable in the area, with more deeper knowledge in a lower number of specific areas. Not to make you a jack-of-all-trades in CS for example, but to prepare you to know where to do and where to look and where to start if you'll require deeper knowledge in some other area of your field than the one in which you got deeper intro earlier. That, and survival, i.e., get you acquainted with an environment where you don't only have to learn and be good in one specific topic, but be able to quickly pick up superficial and sometimes deeper knowledge in a related field as well, and be able to produce some results in a short time period. Plus, add the networking possibilities, the opportunity to meet people and gather connections for your later professional life (if you get lucky). You don't get these if you get your degree by doing online courses and from libraries.
Given the above, I don't think longish courses are doomed, they have their places, but one has to have the ability to judge which ones do, retain them, and complement them with some others which have shorter periods and get you more diversified knowledge, which don't necessarily require face-to-face presence or on-site experience. They have to find the proper balance.
I wouldn't support to give total control in the hand of the students when preparing their courses and modules, since that might result in a too diverse graduate pool - some which have very narrow and deeper knowledge, and some who only have very shallow knowledge in several areas but none actually usable for anything. They simply don't have the necessary experience to be their own guides.