But in general this will likely be a bit frustrating as all the interesting stuff happens in init and there's no real way to modify what it does, only call it or not call it. We don't even export the JSON definitions for blocks so defined, so you can't even take a copy of the JSON, modify it, and define a block type using the modified copy.
We discussed exporting JSON when we recently started work to move some of the library blocks into plugins but ultimately decided against doing so.
I have also mooted a proposal to
change the way we create block definitions for the library blocks (though not change the mixin-object-with-init-method format that Blockly ingests). If we do update our block definitions to use this more class-based system, it might be possible to extend a block definition by subclassing, though this would not be as straight-forward as it sounds and in any case this proposal is unlikely to be implemented in the near future.
Thanks for raising this interesting topic, though.
Christopher