Ryan Moore ended a three-year wait for his second PGA title at the Justin Timberlake Shriners Hospitals for Children Open in Las Vegas.