What is the reason for host lock lease acquired by instance id in Azure function?

Functions runtime acquires lease on the storage account attached to the function app using an unique Id that is specific to your function App. This is an internal implementation detail.

Deserializing to a generic type should work as long as the queue trigger data matches the POCO. For e.g, here is generic type

public class GenericInput<T>
{
    public T OrderId { get; set; }

    public T CustomerName { get; set; }
}

and the function

 public static void ProcessQueueMessage([QueueTrigger("queuea")] GenericInput<string> message, TextWriter log)
    {
        log.WriteLine(message);
    }

Sample queue data

{
  "OrderId" : 1,
  "CustomerName" : "john" 
}

you would get serialization errors if queue data cannot be serialized to the expected GenericType. For e.g following function would fail trying to process the bad queue input: function:

public static void ProcessQueueMessage([QueueTrigger("queuea")] GenericInput<int> message, TextWriter log)
    {
        log.WriteLine(message);
    }

bad input:

{
 "OrderId" : 1,
 "CustomerName" : "cannot covert string to number" 
}