I have been researching the same issue! Looking at the fix you posted, it appears incomplete because you are essentially changing the key that is used in a couple of maps without changing any of the places that get values out of those map to use the new key. I took a look at fixing both the PUT side and GET side of the maps but it seemed like it could get messy based on how Axis1 is using id's and href's and sometimes calling hrefs ids and what has a "#" appended in front of it and what doesn't... it's a wonder any of this stuff works!
I believe the core issue is that Axis1 is treating fields named "id" like they are of type "XSD ID" and assuming they will be unique across the entire document.
I am thinking a more targeted fix might be to introduce a check of the type of fields named "id" before they're treated like "XSD IDs".
In org.apache.axis.encoding.DeserializerImpl - there is a section of code as follows:
Thank you for this post!!