As far as I am concerned it should only be government that cannot discriminate, anyway.
It is the government that should not be able to make distinctions between different free citizens, in law, regulation or government services.
But free citizens should be able to make distinctions that fit their values and beliefs, in their free associations with each other.
If a "heterosexual" company does not want to do work for a "homosexual" individual or company, or if a "homosexual" company does not want to do work for a "heterosexual" individual or company, I see no problem in a truly free society.
It is the government that must treat them the same in how the government regulates them, not in what the government commands they do or not do with each other.
Tolerance and non-discrimination are not the same concepts as acceptance. The law should expect tolerance in a multi-cultural society, but it should not be able to command acceptance. Tolerance mostly means not going out and taking direct action against, as opposed to directly taking action for. Tolerance does not require acceptance of others values, it does not require a change in your values. Tolerance only predicates a certain level of respect for the freedom of others to NOT share your values, without you or others requiring that ones own values be accepted. Tolerance does not therefore require that you suppress your values in who you choose to freely associate with. Tolerance only requires that you respect that same freedom for others.