I think what I may try is (just thinking out loud): if all the user-defined search columns are physically part of the grid's datasource, then a straight construction of a filter string for rowfilter makes sense. Only if any of the columns are coming from master tables, then something more elaborate needs to be done.
Again, just thinking out loud, but I'll look at it later.
Thanks,
Kevin