You can go with less, I only gave my recommendation for getting the similar stability of autoinc, despite the fact that separate DBFs can easily be manipulated. It's not impossible to manipulate the header of a DBF file to set the autoinc counter to a wrong value, too, but usually the interest of manipulation isn't existing, users want a working software, too, so what you would need to defend against is sbaotage of employees that got fired, perhaps, etc.
As you lock the header, you already do prevent the simplest case of concurrently writing the same maxid+1 value as the next id, because only one client with the header lock can do that. If you would have a magnitude or two more users that header lock also already is too blocking for shared usage of dbfs, the sepearete DBF just for the use case of determining an id is locked separately and gives you a unique value that then can be put into the main table dbf even without any locking of that, just in shared access, with or without buffering, that's the big advantage, there's still waiting time for batch processing, of course, but you could add a mode to increment by 5, 10, 100 and use 5, 10, 100 IDs for your batch appending without going through lock/unlock process for every single ID.
That works, because everyone (evgery code) of course obliges to that mechanism, so even before your batch adding is done another client will get the id+101 even if that one insert is done before the batch even started.