I would propose an alternative take here, and one that is seemingly overlooked. The question is, "Do you actually need pixel perfect collision?" Or, to put it in a different way, do you need the computer to do pixel-perfect collisions for you? When it comes down to it, very few games have pixel perfect collision. It is entirely common to use circles, cylinders and rectangles to approximate collisions, and then work the art assets in around them. For example, perhaps you wish to have your character bump into a wall, and when they do so, they put their hands up on the wall. Having the computer figure out a bunch of calculations to make the sprite align with the wall might be fine during development, but to save performance (and arguably your own sanity), it would be far easier, and more reliable, to edit your sprites so that they animate naturally into the position you want them to be in. A pixel perfect collision with the wall, while still relying on the convenience of a rectangle to define the boundaries of the character, is much easier when you conform your art assets to your code, rather than vice versa.
In your case, you have admitted that your sprites constantly change size and origin points. Well, you have some options. You can store those differences in code, which you can then look up to make the corrections you need, or you can adjust your art assets to be more universal. you can have differently sized bounding boxes, and even offsets, if you need, but generally speaking it's best to have those be somewhat consistent. Even if your goal is, "Oh, but while I'm ducking I want my bounding box to get smaller so I can duck bullets with perfect accuracy!" Well, without changing the bounding box at all, you could easily just store the player height during the ducking animation and compare that during a collision to see if the bullet should hit or not. You start from a place of consistency and then add the exception, rather than starting from the exception and working towards consistency.
Other people might be able to offer a bit less abstract advice on this problem, but it's worthwhile to examine how much of the problem you are trying to solve is caused by other things you could be solving instead.