Another thing to think about is the amount of calcium on the bottom of the water heater. When the level builds up to an inch or more on the inside of the water heater, the bubbles created when the water boils make a noise that often is reverberated through the piping. You can check this by draining the water heater and removing the hose drain on the side of the water heater. If no water comes out or if when you stick a piece of 1/2 inch copper into the hole and scrape the bottom you get a huge amount of calcium, you either have to live with the noise or replace the water heater.
In addition, expansion and contraction are a huge factor on hot water heaters. Water lines (copper and steel) exapnd and contract when hot water runs in them (copper more than steel). When they expand and contract often they rub against hangers, brackets and the inside of the joists (when they pass through them).
Try to listen carefully for the location. If its coming from the water heater, its calcium.