You can create a system instead but use another method to do the ForEach() instead of in OnUpdate(). Then you can cache that system using World.GetOrCreateSystem() then call the method that you created.
Or there could be a new feature, in the next version, that let you call some static class that works just like Entities and Job that skips this awkward workaround.
I don’t think this is planned to be implemented as all that Entities.ForEach does is to generate a bunch of code, which some are very specific to SystemBase (like WithStoreEntityQueryInField). So yes, the workaround here is to create a dummy system to do that for you or (my personal choice) use IJobChunk instead.