I suspect your water heater and nice shower valves are functioning correctly. It is possible that you just don’t have enough hot water capacity for the high-flow shower head and valves, even with a 50 gallon water heater. Please follow me through this thought process.

Kohler makes good valves and shower heads and is known for larger pipe sizes in their fixtures that can deliver higher flow water volume through both their shower mixer valves and shower heads. They are shipped with flow restrictiors that diminish the flow rate to 2 or 2.5 gpm or gallons per minute. Many plumbers remove these flow restricters at installation.The summary is that these plumbing fixtures can be used on the body spray type applications that deliver higher flow rates.

Next is the water heater functional operating capacity. Water heaters deliver only about 75% to 80% of their full capacity in real hot water delivery ability. So your 50 gallon heater can deliver maybe 38 to 40 gallons before the recovery rate becomes the limiting capacity factor. Now imagine a shower or showers for 15 minutes consuming 3.5 gallons per minute of hot water plus another 1.5 gallons of cold water mixed through the shower valve. That hot water amount is over 50 gallsons consumed and now the hot water is limited by how fast the recovery rate is on the water heater.

I think your water heater is too small for the the flow rate of the valve and shower head. Replace the flow restrictor in the shower head or heads and you will likely extend your hot water to 20 minutes. Another option is install an on-demand water heater in tandem with the existing 50 gallon water heater for additional capacity.