The second line isn't right. ExpiresDefault is not an HTTP header, but rather an Apache mod_expires directives that sets the "max-age" in the HTTP Cache-Control header.
If properly-configured as shown, these two lines would be redundant:
Header set Cache-Control "max-age=21600"
ExpiresDefault "A21600"
It's not clear what you're saying about not being able to specify filetypes. Is it that mod_expires is not available on your server, that you cannot use <FilesMatch>, or both?
While it's plausible that mod_expires might not be available, <FilesMatch> is part of the Apache core, and so *must* be present (well, unless it's a bad Apache install, or something...)
Also, since your site is large, I'd guess that it is dynamic. If so, be aware that you could use the auto-prepend feature of PHP to include a code snippet to write any headers you'd like, so you probably have a work-around available if mod_expires and/or <FilesMatch> don't work.
Further, be aware that most of the advantage of caching does come in the short term. If you enable caching for ten minutes, your server bandwidth and load will drop by a factor of x. If you double that cache time, the bandwidth and load will drop again, but by somewhat less than x. By the time you've got your cache time set to two weeks, there's very little gain to be had from doubling it again.
If you are seeing only small gains from enabling caching, it may be that you're not taking advantage of the various "flavors" of cache-control available, such as these variations:
Header set Cache-Control: "max-age=86400"
Header set Cache-Control: "max-age=86400, must-revalidate"
Header set Cache-Control: "max-age=86400, no-cache, must-revalidate"
Header set Cache-Control: "max-age=86400, private"
Header set Cache-Control: "max-age=86400, public"
Header set Cache-Control: "max-age=0, no-store"
All of these do different things, and --assuming you can find a way to apply different headers to different kinds of objects-- are quite useful in controlling private browser and public network caches.
The "must-revalidate" option is the one that you might find most useful, in that it would allow you to set a longer cache time on the affiliate content, but force the client to check back with your server to see if that content has been updated -- even before the expiry time is reached.
Must-revalidate is the option that causes the browser to send "If-Modified-Since" request headers to your server. If the server determines that the content has not been updated, it simply replies with a 304-Not Modified status response and no content, which saves bandwidth. If the content has been updated, then the server responds with 200-OK and the new content, plus a new Last-Modified timestamp.
There's a lot to it, getting cache-controls set up for maximum benefit. But you can indeed save a lot of server resources and make your site appear much faster by using them correctly. However, while you are experimenting with all of this, keep your cache times short -- Once you've told a client to cache something for two weeks without requiring revalidation, then the only way to get that client to update its cached copy is to change the object's URL... So be careful!
Use a server headers checker to check out your site and other sites as well, and look up the various cache-control settings that you find. It's useful to see what others are doing, as long as you keep in mind that they too might make mistakes -- even the 'big sites.' :)
Jim