@matt I noticed that the Note widget doesn't appear to support selective refresh. If I change the title of the widget in the customizer controls then the entire preview refreshes. Similarly, the entire preview refreshes if I change the template for the note widget. Is that something you're working on? Ideally changes to the widget would only refresh just the container for the widget since it is much faster. This is what selective refresh makes possible.

Also, since your widget is heavy on JS, you might want to look at the new JS Widgets plugin which seeks to re-imagine widgets to make JavaScript a first-class citizen. Instead of the instance data in the customizer setting being a blob of base64-encoded PHP-serialized data, with JS Widgets the instance data is just a regular JS object in the customizer setting (like how nav menu items are represented). This allows you to manipulate it directly without any roundtrips to the server (no more spinner). You can also use any frontend technology you want to build the forms. Currently there are examples using Backbone, React/Redux, and the customizer framework. It's still an early iteration, so I'm keen to get feedback on it as a new base for widgets in core.