SQL Server 2016 SP1 + strategy for long term version retention (snapshots, temporal tables, other?)
Since you're dealing with a single database (or a known set of databases), simply create a SQL Server Agent Job that restores the month end backup to a "month-end" database.

Schedule the job to occur early on the first day of each month.  The job would simply restore "last nights" full backup.  You are taking nightly backups, right?

In order to ensure the immutability of the month-end data, simply mark the database as read-only after the restore finishes.  Something like this:

ALTER DATABASE [xyz] SET READ_ONLY WITH ROLLBACK IMMEDIATE;


Details for the above command are here.