First thing is to remove the $:: prefix from your iRule's reference to the data group(s). This won't work in 10.x+.
Also note that the HTTP path will never be null. If a user types in http://example.com into the address bar, the browser appends a default path of /.
Next, in order to know which paths to redirect with a trailing slash, you should be able to include them in your existing TrailingSlash_DataList data group.
You shouldn't need to check if the path already ends with a trailing slash as your data group entries shouldn't have a trailing slash. So you can remove this 'and !($req ends with "/")'.
If things aren't working, add some debug logging of the original path and what you're redirecting to to help troubleshoot.
Aaron