Welcome to the OEM forum, Martin.
Yes, there’s a software limit and it’s that which you have fallen foul of. It is there to suppress contact bounce when mechanical contacts are being used, what happens is after the first transition is detected, the sensor is locked out for about 100 ms (it’s that at present in the emonTx, but it’s changed over time) and the recommendation is always to set the lockout time to zero if you have a transistor output or similar.
You need to edit the sketch to change this. You are looking for something like
int pulse_period = 100; // pulse min period
which you can change to zero (or a much smaller value - I have a fluorescent lamp with a glow-tube starter, and get a many tens of pulses when I switch the lamp on if I set mine to zero).
You don’t say what hardware you have, so I can’t go into any more detail.
Are you using only the optical pulse sensor on your main incomer, or is there a c.t. as well? Because 30 kW is above the point where our standard 100 A c.t. is running into saturation, so it won’t be accurate.