Puedes lograr esto usando el MAX
función de grupo. He limpiado un poco la consulta, pero fundamentalmente esto debería conservar la misma lógica que tenía antes y, al mismo tiempo, ser un poco más optimizable. Simplemente cambie a.date_time por cualquier campo de fecha y hora en su tabla.
SELECT
a.visitorid,
MAX( a.date_time ) AS last_visit_date_time,
b.onlinestatus,
b.username,
b.age,
FROM tbl_visitprofile a
INNER JOIN tbl_user b
ON b.id = a.visitorid
AND b.STATUS != '2'
LEFT JOIN tbl_pauseusers p
ON p.user_id = a.visitorid
WHERE a.visitmemberid = '10'
AND a.blockstatus = '0'
AND p.user_id IS NULL
GROUP BY a.visitorid
ORDER BY last_visit_date_time DESC
LIMIT 0 , 12;
Esto ordenará los registros por fecha/hora de la última visita y devolverá los últimos 12.