Three functions to select a random character, each of which can be used at most twice
Iterative instead of recursive

Python doesn't really suit itself for recursion 


No tail recursion
Generally slower
Limited max depth

Use ALL_CAPS for constant variables

marshels is a constant variable and should be written in ALL CAPS

Thnx @Gareth Rees for clarifying
Functions and variables should be snake_case
@Caridorc is correct in saying that something like isinstance() might work, but without the actual class it is difficult to tell
Think about changing the data type of usedMarshels

list.count(x) is an \$O(n)\$ operation, see time complexity, meaning it will have to loop through the entire list to find how many there are.

Instead you could hold a dictionary of the amount of marshals making it an \$O(1)\$ operation.


Here is some code to give you an idea hopefully,

import random

# Random Marshall class
class Marshel():
    def __init__(self, name):
        self.name = name

    def __str__(self):
        return self.name

a = Marshel("First Marshal")
b = Marshel("Second Marshal")

MARSHELS = [a, b]        
used_marshals = {a: 2, b: 1}

def get_leader(type_):
    while True:
        # marshal = random.choice((m for m in MARSHELS if isinstance(m, type_)))
        marshal = random.choice(MARSHELS)
        if marshal not in used_marshals or used_marshals[marshal] &lt; 2:
            return marshal

if __name__ == "__main__":
    print(get_leader("Does nothing yet"))
    # Will print "Second Marshal" because that is the only viable option