Best way to distribute templates and code accross multiple wordpress sites?

You can bundle the files into a plugin.

For the Christmas page, you could use the page_template filter – This question gives you an example on how to use it – Create custom page templates with plugins?

For the CSS/JS file, you can add them using the wp_enqueue_scripts action, as you would normally use in a theme. The only difference is that you’ll need to use plugin_dir_url() to link to the target files.

Finally, for updating the plugins easily, there are a bunch of libraries like this one which allows you to have the one click updates for your plugins like you normally have for plugins hosted in the WordPress repositories.