Replace Field Contents will avoid the loop and I think it's the fastest option also, but you have another issue you'll need to handle:
Given that some of their staff will be accessing via internet connections...
If they are editing one of the records you are attempting to update, they will have locked the record and this will keep both a looping script with set field and a Replace Field Contents operation from updating the locked record. (Only one user is allowed to edit a record at one time.)
For this reason, it's often much safer to postpone such "batch updates" to points in time when there are no other users accessing the database. If there is even the slightest chance that a user may be editing a record you want to update, you'll need to add code that checks for the record lock or the error code generated by the lock and then either processes the updates for those locked records at a later time or at least presents you with a report that lists the locked records.
Thanks! I didn't realize that's what replace field contents does - I presumed it was an alternative/superseded script step that with a similar function to 'Set Field'... And the advice about checking for locked records will be invaluable! I think the client will be more comfortable within instant results, but I will suggest that it's best to perform this action when usage is likely to be low.