The variable you want for grabbing the data is {{ widget_data.theme.value }}. You can also cut down on the code by using a [value, label] setup in your choice field, with the value being your class. That way instead of having an if statement you can just put the value directly into the class. Like so:
Choice (use the choice tag, the choice module seems to be deprecated)
{% choice "theme" label="Select a Theme", value="theme-purple_haze", choices="[[\"theme-purple_haze\", \"Purple\"], [\"theme-green_hell\", \"Green\"], [\"root-theme\", \"Yellow\"]]" %}
Body Class
<body class="{{ widget_data.theme.value }}">
If you wanted to use a custom module instead you could set the class using javascript from within the module.
<script>
document.querySelector('body').classList.add({{ module.theme|tojson }});
</script>