You next best might be to trigger every 5 minutes, and then keep an internal count or timestamp, and run every 5th trigger, or if 25 minutes have elapsed since the last run.

More complicated would be to work out the correct times for a day, starting at midnight, and accept the error at the end of the day. This would involve duplicating the crontab entry to the different hours.

More complicated than that would be to work out the times for an entire month, which would involve many copies of the crontab entry to cover the different combinations.

Finally you could implement your own always on daemon, and have that do the scheduling.

I have no direct experience with it, but fcron appears to do what you want out of the box. According to its documentation you can specify frequencies:

# Get our mails every 30 minutes
@ 30 getmails -all
# make some security tests every 48 hours of system up time,
# force a mail to be sent to root even if there is no output
@mailto(root),forcemail 2d /etc/security/msec/cron-sh/security.sh

Let me explain in short what's the problem here. Entering 25 in the minute field causes cron to execute when the current time's minutes equals 25, that is once an hour. You can enter a list of matches, the problem is that 60 (minutes of an hour) isn't divisable by 25, so you need to add several entries based on the hour. The least common multiple of 60 & 25 is 300, that is 5 * 60. so you will need to cycle through 5 hours until returning to your original start. for example:

0, 25, 50
15, 40
5, 30, 55
20, 45
10, 35
...

But here again, 24 (hours a day) isn't divisable by 5, the least common multiple of 5 & 24 is simply 5 * 24 = 120. & so on and on...