I know this is an old thread, but how about this as a potential mitigation. Just conceptual, but here it is:
Whenever you turn off either a dimmer or a smart bulb, have an automation that intercepts the action.
That automation turns the bulb back on, and then sets a variable - whose default value is false - to true. Needed in order to run the automation only once.
The automation sets the luminance level of the bulb, and turns it off.
Now… of course the automation would intercept the light turning off, right? And you’d get an endless loop.
You configure the piston such that “if light is turned off while variable is true, do not run the action”.
Only run the action if light is turned off while variable is false.
As the final step, two seconds after the action turns the light off it resets the variable to false.
You’d have to live with every light/dimmer for which this is configured flickering briefly after being turned off… but that’s probably the least objectionable of the various consequences.