You don't have to use the GPL to link GPL code. You are just required to distribute the final binary under GPL. When you distribute the source files, individual files can be under individual licenses, they just have to all be license compatible with the final license.
IE, use GPL code, license header all your own stuff as Apache, distribute the binary as GPL, but anyone else can use your own work under Apache if they want if you are individually licensing all your own files under it, they just could not use the GPL parts without also distributing under GPL.