> The problem happens when you actually use it in practice.
I think it's fair for any code publisher to require that the freedoms he/she gives with his/her code never get taken away and it or its modified versions can never get locked up or used in opposition to the wishes and interests of the users (i.e. the users retain the ultimate control over modifying behavior by modifying the code).
> Due to this reason, many companies forbid the use of GPL licensed software as well as release anything under it (because then you can’t use your own code!)
It seems you have a misunderstanding here, and I think it's a common one. You can use your own code in any way you want. You own the copyright, you decide the rules. And you don't need any agreements with yourself. Further, you can release your code to multiple people, each with any license you want. You can also sell proprietary licenses to companies that prefer it, while also releasing the same code under a GPL license to the public.