I'd strongly suggest widening the pool of numbers available
Numbers are taken from pools allocated in blocks by ofcom and ofcom will only allocate a new pool if it is satisfied that the network is recycling its unused numbers where possible. So giffgaff has to do its best within the pools that ofcom allows giffgaff to use.
But I believe it is 6 months to disconnect a number and then at least a further 6 months -- during which time the numbers are monitored for incoming call attempts and individual numbers are held back longer. That said, the initial 6 months does probably not apply if another number is ported in to replace the number giffgaff issues prior to porting. So, the minimum period probably still is 6 months -- but still with the possibility of being extended if incoming calls are still attempted.
unused numbers go back to the central pot and are allocated back by networks. once the number is deactivated, it doesn't stay with giffgaff
That actually wouldn't be possible. The "central pot" is only capable of handling allocations in blocks of 10,000 consecutive numbers. The chances of giffgaffers all releasing a block of 10,000 consecutive numbers is sufficiently small to be considered an impossibility.
You can actually download the "central pot" from http://static.ofcom.org.uk/static/numbering/#pers -- look at it carefully and you will see how it is done, entirely in blocks of 10,000 numbers.