Are you ever going to have enough columns so that the size of a single row is a problem?
The purpose of the sql.Null* types is to determine if the value of a column is null instead of the Zero Value, if it is important to know the difference. You only need to create one per necessary column to pass to rows.Scan(), use the value or null to fill you own data structures, and then re-use them for the next row.