dbcc checkdb runs for interminably long time, 50% of the time
Was there an error from CHECKDB for those occasions when it took so long? Anything useful in the errorlog file for those occasions?

If CHECKDB find an error, it might do a "deep dive" to further investigate (traverse the linked list for the index instead of just checking a bitmap, mentioned here: https://www.sqlskills.com/blogs/paul/checkdb-from-every-angle-complete-description-of-all-checkdb-stages/).