Given you're doing stuff on_tick to move power from battery to steam engine, could you not instead add MJ from battery to an internal accumulator instead? I believe that this is how https://mods.factorio.com/mod/Factorissimo2 moves power from outside a building to inside a building.
Logically, you're unplugging the empty battery from the accumulator, and plugging in the freshly charged battery.
I believe that you can set a maximum discharge rate on the accumulator interface, which will limit throughput. Alternatively, with on_tick, perhaps have a queue that sets the next time to touch a given discharger to set the next time to move charge across? Edit: I believe that there's an API function specifically to request a timed callback in 'n' ticks for just this sort of purpose.
Alternatively, if you used steam as your working fluid, I believe that it would just work with Omnifluid.