Everything in these variables (as declared at the top of control.lua) is probably the issue:
-- Stores code and built environments as {code=..., ro=..., vars=...}
-- This stuff can't be global, built locally, might be cause for desyncs
local Combinators = {}
local CombinatorEnv = {} -- to avoid self-recursive tables
Afaik factorio multiplayer runs in "lockstep", i.e. every single machine (and dedicated server, if any) runs full game simulation on their own, and have to assume that they have exactly same state - see e.g. https://www.factorio.com/blog/post/fff-76 for more info.
More on desyncs - https://wiki.factorio.com/Desynchronization
And common causes for these in mods - https://wiki.factorio.com/Tutorial:Modding_tutorial/Gangsir#Multiplayer_and_desyncs
So here you can see Cause #1 for desyncs - e.g. "local Combinators" - which will be initialized in e.g. player-1's game, and then player-2 joins, it will be immediately different for them.
I don't know if game detects this local-mismatch in Lua env immediately via some env-hash though - maybe not immediately, or maybe not at all, and the issue is only raised when something in the game world gets altered differently.
One of the things stored there is "code" objects, produced by Lua's load(...)
.
Afaik, and unless this changed in the last couple years, factorio does not save these objects into savegames, and iirc raises error when trying to put those into globals, or puts nil in there instead (don't remember which), i.e. does not know how to serialize those.
These "code objects" are the code being run on the combinators, and maybe simple MP-fix would be to load() them every time from string before every run?
I dunno how significant performance hit will be, but if the goal is to get at least something running with this mod, that'd be where I'd start, see if there are any other issues after this.
And once you remove code objects from there, you can replace these two local-db vars with keys in factorio "globals", which are different from lua-locals in that they get synced to other people when they join the game, so if all state is in those, everyone has same code and same data, and there will be no obvious desync-issue there.