I can do (and this is minimal):
3 questions (for both variations, this is minimal because there are only 3 responses and 32<24)
Ask the following questions to three people:
If I took the four letters J, P, R and T, put them in the order corresponding to the order you are in where J=Joker, P=Penguin, R=Riddler and T=Two-face, indexed it into the list of twenty-four permutations of those four letters in lexicographical order, and took the ones/threes/nines a different one of the three options for each question digit of that number in ternary, is the following statement true: 'either the digit is one and you are telling the truth, the digit is two and you are lying or the digit is zero and either you will lie and say yes or tell the truth and say no'?
Then:
Yes means 1, no means 2 and pass means 0 since the option for 0 is a head-exploding statement. Then you can reconstruct the number, back-index into the aforementioned list and find the order!
Index of order:
JPRT,JPTR,JRPT,JRTP,JTPR,JTRP,PJRT,PJTR,PRJT,PRTJ,PTJR,PTRJ,RJPT,RJTP,RPJT,RPTJ,RTJP,RTPJ,TJPR,TJRP,TPJR,TPRJ,TRJP,TRPJ
Examples:
Riddler, digit=1: "The digit is 1, and I am telling the truth. So true, and I say yes."
Riddler, digit=2: "The digit is not 1. The digit is 2, but I am telling the truth, so false. The digit is not 0. So false, and I say no."
Riddler, digit=0: "The digit is not 1 or 2. The digit is 0, and I am telling the truth. If I say no, then it's true, because I say no. If I say yes, then it's false, because I don't say no. So pass."
Penguin, digit=1: "The digit is 1, but I am lying. So false, but I say yes."
Penguin, digit=2: "The digit is not 1. The digit is 2, and I am lying. So true, but I say no."
Penguin, digit=0: "The digit is not 1 or 2. The digit is 0, and I am lying. If I say yes, then it's true, and I should have said no. If I say no, then it's false, and I should have said yes. So pass."
Two-face/Joker: refer to Riddler if telling the truth, Penguin if lying.