```python
from typing import List

def order_release_tags(tags: List[str]) -> List[str]:
    """
    Order a list of release tags in ascending release order.
    Each tag is a string in the format vX.Y.Z[-preview-label], where X, Y, and Z are non-negative integers.
    The function returns a new list with the tags in the correct order, leaving the original list unchanged.
    """
    def parse_tag(tag: str) -> tuple:
        parts = tag.split('.')
        major, minor, patch = map(int, parts[:3])
        if '-' in parts:
            preview, _ = parts.split('-')
            return major, minor, patch, preview
        return major, minor, patch, None

    def compare_tags(tag1: str, tag2: str) -> int:
        parsed1, parsed2 = parse_tag(tag1), parse_tag(tag2)
        for i in range(4):
            if parsed1[i] != parsed2[i]:
                return parsed1[i] - parsed2[i]
        if parsed1[3] is None and parsed2[3] is not None:
            return 1
        if parsed1[3] is not None and parsed2[3] is None:
            return -1
        return 0

    sorted_tags = sorted(tags, key=lambda tag: compare_tags(tag, tag))
    return sorted_tags
```