Under CanStackItem, GetOwnerPlayer is null when items are stacked in a container, so it gets returned null, preventing all stacking logic. OwnerPlayer is later used to giveitem (or drop) to fix other bugs.
What I did is allow stacking only if both items are empty of contents & magazine, or fuel for flamethrower & chainsaw.
As for water bottles/jugs that get all filled of fresh water, I commented the 1st "if" under OnItemSplit, so it does not fill them all on split.
I'm annoyed you say it's not a bug when it clearly is, but anyway, I'm open to share if you're interested. It could easily be made into a "fix" option too.
Thank you!