For # 2, with multiple BE instances, you can have separate tables in the same DB. This is accomplished by giving each set of tables a different prefix. The standard prefix is "be_". You can use other prefixes, like:
In the web.config file of each instance, there's the BlogEngine providers section. For the DbBlogProvider, you would specify the table prefix there. Like this:
<add name="DbBlogProvider" type="BlogEngine.Core.Providers.DbBlogProvider, BlogEngine.Core" connectionStringName="BlogEngine"
And then this particular BE instance, will use the set of tables prefixed with be_Craig_.
For # 1, you could make a somewhat trivial modification to the BE code so it would choose a different theme based on some set of conditions. The blog post below shows where the theme (aka master page) is set. It's in the BE core. You could
add logic there that determines which theme is applicable and use that theme.