Configure two ESX servers using shared storage (NFS is probably easiest). Install PiaF on a virtual on one ESX server. Shut it down, and import the virtual into the other ESX server. Now you can have it running on one server or the other (but not both at the same time obviously). Power it up on one ESX host. If that host fails, power it up on the other.
If you want this to happen automatically, buy a vcenter license, or do a little power-shell scripting.
I've been involved with providing various HA solutions for many years, and I can assure you that most software's HA functionality is pretty dicey. Some works almost ok, some are utter crap, but none that I've come across are perfect. ESX, on the other hand, makes HA simple, foolproof, and best of all, it just works.
There appear to be ports for asterisk 1.8, 11, and 13, but I certainly would not want to be the maintainer of that. While they share much, there are just too many underlying differences between FreeBSD and Linux.
PiaF is a much bigger animal than just freepbx.
Take a look at the PiaF 3 installer, there are 100 or so packages that would need to be accounted for.
I'm pretty sure not one line in the installer would function as intended. The baselayout is not the same, no iptables etc.
It can be done, but who would maintain it?
How about inbound destination list(s) where incoming DIDs could be added like the blacklist but have all calls from the DIDs in the destination list sent to the specified destination for that list. This would make it easier to maintain inbound routes; for example have a "lenny list", a "family IVR list", "Ring without IVR list" etc.