Most people just keep one Account record and add product-specific status fields (e.g. Fund Admin: Active, Cap Table: Prospect).
Then you just run separate Opportunities for each product so the different reps and billing cycles stay separated. It keeps the data clean in one place without having to deal with four different accounts for the same firm.
You could introduce custom UI compoments that allow to view accounts that didn't already buy X product (thus not needing extending / maintaining account field extensions)
Also, I have a nice deduplication tool flying around somewhere. If interested feel free to DM.