Yes you can! You would need to rewrite your template to include functions that get content from other locations and output such content. Where the content comes from can be determined at run time. For example, functions can get content from one place for visitors and another place for logged in users. The possibilities are endless, limited only by your imagination and coding skills.
You can even make your home page one big widget area whose content is entirely composed of widgets. I would not recommend a widget approach for main page content though. You could use the page’s custom fields to define what content should be displayed. This concept is good, but the default UI for custom fields is terrible for this use. I recommend using the Advanced Custom Fields plugin or similar to better create a meaningful UI for entering custom field data.
Once you’ve defined the desired UI with the ACF plugin, you template code can largely be a series of lines, each similar to the_field('foobar');