There is a class (net.minecraft.item.crafting.RecipesIngots) which creates recipes for the gold block, iron block, etc. and the reverse recipes like one gold block equals 9 gold ingots and so on.
The array storing the combinations is for the reverse recipes and therefor uses for the ingots a count of 9. The problem is that it uses the same ingredients to create the recipe for the block and therefor each item in the block recipe has a count of 9 resulting in 9 * 9 required items. This cannot be seen in vanilla gameplay because the method net.minecraft.item.crafting.ShapedRecipes.checkMatch(InventoryCrafting, int, int, boolean) currently only checks item and meta data but not count. However, it will very likely cause problems in the future when this is changed and already causes problems for mods which display crafting recipes.
This could be fixed by having the method net.minecraft.item.crafting.RecipesIngots.addRecipes(CraftingManager) make a copy of the ingot and set its count to 1 when adding the block recipes.