Listeners shouldn't be such a big problem. You shouldn't have to override them, you should be able to attach your own. So if I were you, I'd attach my own listeners (with their implementations in your own bundle), copy-paste the original code along with your customizations, register them as services and attach them to their respectable sources (probably using tags in your services registration file - that's a common way to attach them). This should allow you to have everything in your own bundle and you should be able to clear the original bundle from your custom code. Also, note that you can use the services configuration file to override many core classes just by changing the correct class name parameter to one of your own implementations.
This is all that I can think of without taking a look at some code. Hope it helps.