As you rightly say, the issue is that the drive appears to be full of data, and therefore the 'free pool' of blocks is relatively depleted, compared to the same drive, unencrypted and with TRIM.
How much of an issue this is depends on how aggressively the drive reclaims free blocks and whether or not it does it in the background (or only on write), and also how much 'overprovisioning' there is on the drive.
Enterprise level drives frequently provide 20%, or so, overprovisioning. This ensures that even when the drive is full (or used on a non-TRIM enabled system, e.g. in RAID or FDE) that there would always be more than enough free pages available for most forseable write bursts.
Consumer level drives tend to use less overprovisioning. 7% is typical. First generation sandforce used up to 12%. Newer generation drives are tending to provide less overprovisioning, in order to appear as better value and give customers more flexibility. This isn't so much of an issue as TRIM is more prevalent. For instance, sandforce now permit OEMs to configure reduced overprovisioning in custom firmwares, with options of 3% and 0% available for use. For consumer use with TRIM, there are likely to be at least a few% of free blocks available - and you really only need 2-3% free pages to stop write amplification going insane, and performance plummetting.
In terms of free block reclamation, sandforce does it in the background automatically. If you 'hammer' a drive so that it runs out of free blocks, it will slow down because it has to free them up 'on the fly'. However, if allowed to rest for an hour or so, it will recover, as the drive automatically frees them up when idle.
One thing that affects write amplification (and flash wear) is how much of the data is static. On a drive with large amounts of static data (e.g. a very low capacity drive which can barely fit an OS and application bundle), the wear levelling is less effective, meaning that when there are writes, they tend to require very time consuming and wear inducing levelling operations. If, however, you are using large amounts of dynamic data, then the wear levelling tends to be more effective, faster and causes less overall flash wear.
Ideally, you want a drive with a lot of overprovisioning, especially if you are going to demand maximum performance. Don't forget that you can manually overprovision the drive, by secure erasing the drive, and then partitioning only part of the space, leaving the unpartitioned area untouched. If you leave 10-15% unused on a consumer drive, you'll get a similar total level as enterprise level drives.
Some FDE tools do provide their own encryption (compression is a useful pre-processing step prior to encryption as it makes certain types of cryptographic attack much more difficult or impossible), but you could always use software compression at the filesystem level (which is relatively lightweight in terms of resources, and will probably be significantly more effective than the hardware compression in sandforce controllers).