I think you are confused. You do not need swap to cache a slow disk using a faster disk. Swap space is entirely unrelated to that task, it is used to increase the virtual memory available to a system (the kernel will swap out pages to a swap device when it needs more memory for something else - and, of course, using a fast disk like an SSD or a compresssed RAM swap device like zram is better than using a slow disk).
Anyway, ignore swap. It's irrelevant here. bcache or flashcache or dm-cache all do what you want.
BTW, linux already uses all available RAM to cache disks - and automatically release RAM from the cache when it is needed by a program. RAM caching is much faster than SSD caching.
You only need an SSD-based cache if you want to cache more data than will fit in RAM.
RAM is faster (approx $90 to $150 AUD for 16GB at the moment - June 2016 - depending on brand, type, and speed), but SSDs are bigger and cheaper (approx $80 to $240 for around 250GB). and SSDs will get cheaper and larger far quicker than RAM will....they're already becoming reasonably-priced for 500+ GB models, and even a 2TB Samsung SSD is less than 4 times the price of a high-end 7200 RPM 2TB HDD, and less than 8 times the price of the cheapest 2TB HDD.
I expect the price gap will rapidly close over the next few years and in the longer term, SSDs will be both cheaper and larger than HDDs (as well as much faster). I'm looking forward to it, I want to replace my HDD zpools with SSD zpools. Of course, by then, 64GB or larger RAM sticks will also be widely available and reasonably priced too.
Enough of that digression, back to caching...
From the descriptions in the Debian package:
bcache:
Bcache allows the use of SSDs to cache other block devices.
Documentation for the run-time interface is included in the kernel tree; in Documentation/bcache.txt.
flashcache:
Flashcache is a write-back block device cache for Linux. Using the Linux device mapper (DM) it provides an overlay mapper, to cache chunks of data on a high speed caching device like a solid-state drive for fast read access.
Flashcache supports FIFO and LRU cache sets, is configurable and error resistant. It comes with a DKMS kernel module and a corresponding user land for command and control.
Excerpt of dm-cache page from wikipedia:
dm-cache is a component (more specifically, a target) of the Linux kernel's device mapper, which is a framework for mapping block devices onto higher-level virtual block devices.
It allows one or more fast storage devices, such as flash-based solid-state drives (SSDs), to act as a cache for one or more slower storage devices such as hard disk drives (HDDs); this effectively creates hybrid volumes and provides secondary storage performance improvements.
Also, ZFS has built-in support for using a fast block device (such as an SSD) to cache the pool.
I use ZFS and haven't even looked at bcache or fastcache for years, so I can't recommend one over the other.
BTW, there's an interesting blog post on this topic at https://www.rath.org/ssd-caching-under-linux.html, which also mentions lvmcache and EnhanceIO - I know nothing about them aside from the fact that they exist.
Redhat / Fedora developer Vratislav Podzimek blogged a comparison of bcache vs lvmcache.