I think you can do something like that using our Evotiva DNNUserFiles. https://www.evotiva.com/Products/DNN-...
Use its "Root Folder Pattern" setting to include a token for the year (and anything else you may want to include). Just the year would be [DateTime:Now|yyyy]
This will result at run-time the actual folder the user see (and where upload are made) to be for example : <themainselectedrootfolder>/2017.
If the folder is new, it will automatically created, and the user will be granted 'write' (i.e. upload) permission automatically.
Notice the "Root Folder Pattern" can include anything (fixed or dynamic - more tokens). For example "Root Folder Pattern" set as "thedocs/[User:UserName]/[DateTime:Now|yyyy]" will result at run-time being something like <themainselectedrootfolder>/thedocs/<theusername>/<theyear>
Then in other pages you can make the root explicitly <the main selected root folder>/YYYY or just the root <the main selected root folder> and users will see each year sub-folder. or, you can configure the module to honor query string parameters, for the root folder, etc. (e.g. other module or simple html can link to the page where the module is including a query string parameters pointing to a given folder or anything, because the "Root Folder Pattern" setting can include tokens referring to any querystring parameter ([UserFiles:QueryString|something]). More about tokens here.
Which folder users can is is managed in the standard DNN Folder permissions, as well as who is allowed to upload, etc.
It needs some polishing, but the basic idea is there.