Hi,
I think it is alright to use an "updatemulti" in your case, there is nothing much to do if you genuinely need a complex update.
The other and easier way is to use a Unit of Work. It is what you'll get natively if you rely on a LLBLGenDataSource Control to perform the 2-way binding: instead of using a single complex query, you'll have single update queries run successively.
It should scale up safely, but it will definitely perform slower than a compare range.
Now if performance is really an issue maybe you can combine both techniques by splitting the update range into fixed sized arrays and corresponding queries.
Now I don't think the large range should cause problems in the first place, especially if it comes from a user selection, except if the user can select groups of items, in which case it may be that you can introduce join filters to map such groupings.