Any Ideas on How to Prevent TinyMCE Editor From Stripping Code?

Noticing that in the last WP update or two there have been some changes to TinyMCE editor where code that used to be left untouched in the WP editor is being stripped when switching back between the visual / html modes. Turning off the visual editor is not an option for our users which depend on it.

Anyone have any ideas on how can we implement the following code without it getting completely deleted as it currently is? The following are deleted since last WP update whereas there were no issues with this code for the last few years in the sites we have using it ....

<div class="button_1">&nbsp; </div>

or

<p class="button_1">&nbsp; </p>

We're also noticing that breaks are being replaced with non-breaking spaces ....

<br /> becomes   &nbsp;

Trying to avoid an extreme option like:

<div id="map"><span style="display: none;">nothing</span></div>

Any feedback greatly appreciated.