PostgreSQL: Add or drop column under load give wrong number of columns errors
If your function truly uses SELECT * then I would suggest switching to using an explicit list of fields and then separate out the amendment of the table and the function.

ADDING COLUMNS: 
Alter the table first, then change the function once the table is complete.

DELETING COLUMNS:
Change the function first and then the table.  If the table is large and under heavy load I'd still expect problems.