This is apparently an old bug. Seems to be triggered after vCenter and ESXi updates. You can read about it here:
https://communities.vmware.com/thread/394287?start=0&tstart=0 started in 2012
The KB 2037005 you will find is utterly useless - this is not a permissions issue and removing/re-adding the template can be very ineffective. The manual solution in the two links above is to deploy a VM and magically the option will reappear.
I did find however a better way, in a post from 2009! by Arne Fokkema
I can confirm this works. If you don't want to paste blindly, here are the related PowerCLI commands. Italics is a variable, inside brackets is a keystroke:
#Connect to a vCenter, it will prompt for your credentials or use AD integration
Connect-VIServer hostname [enter]
#Get a list of templates (more options, such as from a unique cluster, here
#Convert template to VM (again, remember it's not a permissions problem, this is just a bug)
Set-Template template_name -ToVM [enter]
You will now see a successful task in vCenter that converted the template to a VM. To move it back with Powershell, you will need a variable so you can use .MarkAsTemplate() instead of defining a template with New-Template
$vm_to_tpl = Get-VM template_name | Get-View [enter]
#remove the variable you created, notice no $ sign
remove-variable vm_to_tpl [enter]
However, his script probably works perfectly fine and is a very automated way of doing it, so if you have a lot of them, customize it, test it, save it to a ps1 and watch the magic.
I did remove Arne's -RunAsync from mine since I didn't want the possibility of the script to try to perform a task while the vCenter was still performing the conversion.