```python
def set_minus(entries: list, remove: list) -> list:
    """
    Return the entries of 'entries' that do not appear in 'remove', keeping the order they came in and keeping any repeats among them.
    Removing from an empty list gives an empty list.
    
    :param entries: List of elements to be compared.
    :param remove: List of elements to remove from 'entries'.
    :return: A list of elements that are in 'entries' but not in 'remove', preserving order and duplicates.
    """
    # Remove duplicates from 'remove' to ensure uniqueness
    remove = list(set(remove))
    
    # Use set difference to find elements in 'entries' but not in 'remove'
    result = [entry for entry in entries if entry not in remove]
    
    return result
```