You are in danger of straying into the big mistake that is
Entity-Attribute-Value (EAV). You don't want to go there.
Yes, you'd have to amend your code if you introduced a new account type. Surely you'd have to do that anyway if it had new attributes?
If there aren't too many account types or too many columns altogether, you could simplify to a single table with all common and type-specific columns. The type-specific columns would be NULL for other types and check constraints would be used to ensure the appropriate columns were used for the account type.