I contacted Microsoft about this issue, see the fix below:
After installing the Update Rollup (initially UR12 but also UR14 gave the same results), CRM was not accessible, a generic error was presented on the web page and in the Event Log we could see a .Net TypeLoadException trying to load CrmPerformanceCounterFactory.
This appeared to be a DLL version issue and using Process Explorer from the Sysinternals website I was able to see that Microsoft.Crm.Webservices.dll was being loaded from an unusual location: c:\Windows\Microsoft.Net\assembly\GAC_MSIL, and the DLL there was old. I renamed the Microsoft.Crm.Webservices folder there plus I removed all the Microsoft.crm.* files under C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\<ID>\<ID> to ensure no older cached DLL’s were being used. After an iisreset the CRM UI now mostly loaded but in any of the grid panes we were getting a Generic SQL error.
After we resolved the performance counter problem, we were getting a common generic SQL error that was resolved with the below steps:
Generic SQL Error
Using SQL Profiler I was able to determine that the error was related to a query that was being executed against the PrincipalObjectAccessReadSnapshot table in the CRM Org database, that query was trying to retrieve a column called ObjectTypeCodeName that did not exist in the table definition. Researching in our internal knowledgebase I found another case with the same issue that included a script that fixes the problem by removing the references to the existence of this column in the table from our metadata, the script is:
delete from MetadataSchema.Attribute where AttributeId in ('4456bbb5-0bad-4360-afca-74d099056116', 'c3dce60b-fd95-43b4-8d20-ea4bbcd5c436')
delete from AttributeIds where AttributeId in ('4456bbb5-0bad-4360-afca-74d099056116', 'c3dce60b-fd95-43b4-8d20-ea4bbcd5c436')
Note that this script needs to be run against all CRM Org databases in the deployment, it should remove 4 rows in total.