- Edited
Yea, you can't just add normals together and divide by half to get a new normal. You just have to sum them and normalize that to get a new unit vector normal.
i.e.
NORMALMAP = normalize(mix(n1, n2, 0.5));
that will combine them at 50% and give you a proper normalized unit vector that can be subsequently used for lighting calculations.
Even the original shader you started with did that, you just weren't using a mask that was mixing them the amount you wanted. Your textures don't even look like they're the same as your 'reference', they look like rougher approximations reproduced procedurally.