Avoid redundancy in a database for a tournament software?
Start by having a table with one row for each goal-like thingie.  It would include player_id, game_id, etc.  From that you can do SELECT COUNT(*) ... GROUP BY player_id, goal_type to get counts.

You can either do that 'live' when you need the goal counts, or you can use that SELECT to populate some kind of summary table.

After you have tried all of that, you will have all the data stored so that if the forumlas are wrong, you can repair the counts.

Then you can think about doing the alternatives.  Think of this as being a learning exercise.