A virtual Library is exactly the same as a saved search, except for some visual improvements -- saved searches cannot become tabs on the top of the library list.
One thing you cold do is use saved searches, and make a corresponding virtual library that simply looks up the saved search. Then make a virtual library for
Code:
not search:"=search1" and not search:"=search2" [and so on]
The whole thing could then be maintained using the saved searches only (no replicating the searches to virtual libraries). You'd just need to add a new virtual library for each saved search, and append it to the exclusions library. All other changes would be read from the saved search, so no need to maintain custom columns.*
Although there may be a performance hit to looking up the saved search from the virtual library -- I don't know. Perhaps chaley or Kovid knows.
* -- some people
do use custom columns for search/virtual libraries, simply because it allows you to associate an arbitrary list, like for example a reading list.