I always (well, almost always) contain my snippet calls in chunks. The chunk will contain the immediate <div> container for the snippet’s output:
<div class="sidebar" id="sideMenu">
<h3>Welcome, [!Personalize!]</h3>
[!DropMenu!]
</div>
This keeps my main template very clean and simple, with just the HTML I need for the basic layout.
Then I can either directly call the chunks where I want them in my template (such as {{Footer}} in the "footer" container, or, even better, use TVs to specify which chunks I want in that spot on which pages. For example, on the home page I want the main menu chunk, then the login chunk, then the search chunk. On other pages, I want the main menu chunk and the search chunk. Or maybe I only want the login chunk to show on my Blog page, and not the home or any other pages. Or I decide I’d rather have the search chunk first in the sidebar.
I can create the TVs, have their input be textareas, and use @HUNK in each one, thus giving the flexibility of putting which chunk I want on which pages, in which order! I put the TVs in my template, and they show up for editing with each document.
So basically, I keep my template as simple as possible, use chunks to contain discrete blocks of content, TVs to organize them and do other neat stuff that TVs do, snippets to add localized functionality, and plugins to add global functionality and extra pre-processing.