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 digit of that number in ternary, is the following statement true or false: '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 true or tell the truth and say false'?
Then:
True means 1, false 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."
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."
Riddler, digit=0: "The digit is not 1 or 2. The digit is 0, and I am telling the truth. If I say false, then it's true, because I say false. If I say true, then it's false, because I don't say false. So pass."
Penguin, digit=1: "The digit is 1, but I am lying. So false, but I say true."
Penguin, digit=2: "The digit is not 1. The digit is 2, and I am lying. So true, but I say false."
Penguin, digit=0: "The digit is not 1 or 2. The digit is 0, and I am lying. If I say true, then it's true, and I should have said false. If I say false, then it's false, and I should have said true. So pass."
Two-face/Joker: refer to Riddler if telling the truth, Penguin if lying.