Why are hash map look-ups assumed to be $O(1)$ on average
Because we generally use the RAM model of computation with uniform cost model when computing the running time of operations on a hash table, and the RAM model with uniform cost states that the time to do a single operation on an entire machine word is $O(1)$.  Also, we generally assume that the hash value fits within a single machine word.

Thus, the running time of computing a hash value is not $O(l)$, but rather $O(1)$ [assuming both the value being hashed and the hash value fit within one word, or a constant number of words].

Moreover, when you choose the hash function and size of the hashtable appropriately, the expected value of $k$ is $O(1)$.  In particular, the number of buckets is not fixed, but increases as the number of items in the hashtable grows.  The number of buckets it is usually chosen to be some function of $n$; say $m = 4n$, or something like that.  In any case, we usually choose $m$ so that $n/m = O(1)$.  Therefore, the (expected) running time to find an item within the bucket is $O(1)$.  

Therefore, the total (expected) running time is $O(1)+O(1) = O(1)$.

So why do we use the RAM model with uniform cost model?  Because it's often a better match to reality than other alternatives.