I have optimized your code to make it much shorter here: https://ghostbin.com/paste/uk3zq. As all the year has a same meta box, it can be wrapped in a function.
However, the speed is slow maybe because of the post
field. Each post
field make a query to the database to get all posts. As you have 14 post
fields for 14 years, there are 14 queries. That might be the cause.
Update: I have updated the plugin on Github https://github.com/wpmetabox/meta-box/ that has an improvement for the post
field. Now it runs only 1 query instead of 14. Please download from Github and try it.