The tough part is this could be coming from a number of sources. anything from a crack in the head or a cracked block. It could come in from the timing chain cover area through a worn/cracked cover, etc. another source could be the lower intake or the head gasket oddly enough. I know you just installed low mileage heads but there could be slight chance they have a hairline crack in them. I would look at the timing cover again since you just did that, also recheck the lower intake.