The traditional categorization of conjugations in French is pretty messy, since it's modelled on the Latin paradigm but with many exceptions. The third conjugation is really a catch-all category for the messy verbs that evolved in distinct ways. Outside of those uniquely irregular verbs, there are groups of verbs you can discern patterns for, though.
-dre (except -indre, -oudre) > -du
(This applies for battre too, although it otherwise conjugates more like mettre.)
battre -> battu
-indre > -int
-uire > ui(t)
tenir/venir > tenu/venu
Historical sound change from Vulgar Latin coupled with Celtic/Germanic influence made French stand out from other Romance languages. Factor in also paradigm levelling, often applied inconsistently. Stress was an important factor, culminating in a stress accent system that eventually disappeared. The various vowels are however a remnant of that.
Many of the present alternations, which may seem more like exceptions, could be seen as remnants of much more extensive system of alternations in the past that evolved from conditioned sound changes. For example, all the -indre verbs in French are reflexes of or modelled on Latin Vngere (joindre < iungere), whereas prendre/rendre were from prehendere/*rendere respectively.
There have also been extensive dialectal differences in French, leading sometimes to lexical items being borrowed in fossilized form, occasionally levelled out by analogical change. Cf. oi ~ ai (François vs. français), VllV vs. VlVV (faillir vs. falloir).