Haskell, <del>87</del> 85 - 5 == 80 <del>82</del>
---

    import Data.List
    t x=genericLength.(iterate(sequence.map(const$replicate x[]))[[]]!!)

Uses neither of exponentiation, multiplication or addition (!), just list operations. Demonstration:

    Prelude> :m +Data.List
    Prelude Data.List> let t x=genericLength.(iterate(sequence.map(const$replicate x[]))[[]]!!)
    Prelude Data.List> t 2 2
    4
    Prelude Data.List> t 2 4
    65536
    Prelude Data.List> t 4 3

...<br>ahm... you didn't say anything about performance or memory, did you? But given enough billions of years and some petabytes of RAM, this would still yield the correct result (genericLength can use a bigInt to count the length of the list).