How many shortcodes are too many? That depends on factors such as what else has to be loaded and how important it is to you to shave off every millisecond of page loading time that you can. As a ballpark, a few shortcodes are ok; a couple dozen are probably going to cause problems.
Use global rows or modules instead of shortcodes when you can. Global rows and modules become part of the main layout, so you don’t need separate queries for the data and separate assets to render them.