A primeira coisa a ter em mente é que o código-fonte tem valor separado dos binários. É perfeitamente razoável se recusar a assinar um contrato que exija a entrega do código-fonte ou insistir em pagamentos extras para a entrega do código-fonte. Contratos são documentos bidirecionais. Não deixe a outra parte ditar o que é necessário apenas porque são "grandes empresas" e "fazem isso o tempo todo". Primeiro, decida o que você está disposto a entregar e como você quer ser compensado. Depois, assine o contrato com um advogado e descubra o que precisa mudar. Então, você negocia.
Não faça o que muitos jovens fazem quando começam a contratar. Não assine apenas porque parece que eles têm muita experiência e você não. Essa é uma boa maneira de ser roubado.
Olhe para por que eles querem a fonte. Eles podem querer que eles tenham a opção de usar outro desenvolvedor mais tarde. Ou podem querer apenas porque têm medo de serem atropelados por um ônibus e, de repente, ficarão com binários que não podem melhorar. Se este for o segundo caso, procure um Serviço de Custódia de Código de Software . Esses serviços mantêm o código-fonte caso você fale ou seja incapaz de manter o software. Isso pode satisfazer tanto seu desejo de manter seu código proprietário para atender outros clientes quanto o desejo deles de não ficar segurando a mala com um conjunto de binários inamovível se algo de ruim acontecer.