Packet filtering firewalls and application firewalls are different tools, they are not either/or choices, nor can one of them completely replace the other.
Packet filtering firewalls are faster, so they allow more throughput than application level firewalls. And by faster, I mean considerably faster. Since PF firewalls have to deal with IPs and ports, they operate on a much smaller set of variables, which allows them to quickly decide whether the connection is allowed or not.
But since PF firewalls can't detect protocol abuses, it makes sense to protect the application with a more "knowledgeable" firewall, which can detect all kinds of anomalies, but do this on a much slower rate. At this point however, the slower rate should not be a problem, since all the noise got filtered by the time it reaches the application firewall.
Another problem which prevents you using an application level firewall instead of a packet filter (besides speed) is that probably no layer7 firewall has knowledge of all protocols. Sure, it is easy to find an application firewall for http, but it might not be so easy to find a firewall supporting SSL termination of an MQ server.