You could achieve this using subtables.
Use two tables, a "pre-block" table to cache IP information, and a "block" table of IP addresses that have breached your policy. Using the lifetime facility you can create an effective TTL for the connection.
Example high level overview
1) Check if IP is in the 'block' subtable.
yes - block
no - continue
2) Is the IP in the 'pre-block' subtable
yes - if counter > 49 add to block table with lifetime of 30 min
- else increment connection counter where IP is the key, counter is the value.
no - write IP address to 'pre-block' table with a value of '1' and a lifetime of 30min
See the following link for further reading on subtables
https://devcentral.f5.com/articles/v101-the-table-command-subtables