How can I fix these broken synonyms?
First of all, DBA_SYNONYMS.SYNONYM_NAME is the name of the synonym.
DBA_SYNONYMS.TABLE_NAME is the name of the object the synonym points to.
In your query, it is not the synonym that is INVALID, but the object that it points to.
It is not the synonym that needs to be fixed, but the object.


  If I try to recompile or drop these:
  
  ALTER PUBLIC SYNONYM GV_$LOADPSTAT COMPILE;
  
  It says:
  
  SQL Error: ORA-01031: insufficient privileges
  
  01031. 00000 -  "insufficient privileges"
  
  How could this be so? I'm logged in as SYSTEM.


It is a bug on your version.


  If I try to drop it:
  
  DROP PUBLIC SYNONYM GV_$LOADPSTAT; It says:
  
  SQL Error: ORA-01432: public synonym to be dropped does not exist
  
  01432. 00000 -  "public synonym to be dropped does not exist" 
  
  How can it not exist when the query result shows it?


Then name of the synonym is GV$LOADPSTAT. You are trying to drop the object (view) here, called: GV_$LOADPSTAT. And that view is owned by SYS, not SYSTEM.

Where you see MISSING, the synonyms points to a non-existent object. Replace the object or drop the synonym.