Fair Contracts in Principal-Agent Games with Heterogeneous Types