I have posted here in the past about trying to resolve a repeating water hammer. I have about 500' of 2" PVC pipe between the meter and the house. In the house I have two water heaters, each with its own expansion tank, about 50' apart. Both are some distance from where the water comes in. Originally the banging was about 2 per second or slightly slower. I checked toilets, etc and could not track down any issue. The noise would stop if I shut the main shut off (where the line comes into the house) so I thought the issue was related to the meter, possibly the check valve (although I am not sure there is one).

I moved one expansion tank to where the line comes in thinking this would help if the pulses were in the incoming line. The noise was then slightly less but faster - about twice as fast. With the new arrangement I found that sometimes the banging went on for quite a while. It did NOT stop immediately when I closed the main valve. It did stop when I shut off the inlet valve to the far water heater (this did not stop the noise before).

I may have a slightly different source of the noise now but it seems very similar. The far water heater has been installed about 6 months and we have hard city water. I now suspect crud has built up in the heat traps, causing the noise.

Does this sound like a reasonable possibility? This seems to happen when the pressure in the main is dropping (I have no pressure regulator) which would mean some back flow through the heat trap (although the expansion tank is on the cold side so the flow back through the heat traps should be very little.

The water heater is a GE and it came with the heat traps. Are these any worse or better than other brands?