I tend to break up my event sheets as much as possible, not for performance reasons , but for readability and organisation. Usually I have an event sheet called "common" that is used by every level. It is mainly a set of links to to other event sheets via "include event sheet".
In turn these other event sheets can call on other event sheets via include events, so you can cascade that hierarchical tree idea as much as you like to break it down. Using lots of functions also helps organisation as these can also be on separate event sheets.
Also, I find that creating family groups at the outset is important and putting instance variables at the family level is beneficial. Otherwise I start prototyping a game with instance variables on objects, only to later find that I need variations of these objects and have to create a new family and transfer all the events over to family variables which is a pain! Better to start off everything in its own logical family.
If the sprite is not animated , you can just load in as many frames as you need into this one sprite and use frame offset to display each object. I tend to use this for tiles and non character elements such as bonuses, items, etc. The beauty of this approach is that all your logic, variables etc can run across many similar objects all within one sprite . A mini family as such.