UPDATE: 1st attempt to answer the updated question.
\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
\begin{tikzpicture}[scale=5]
\coordinate (a) at (0,0);
\coordinate (b) at (3,0);
\coordinate (c) at (3,1);
\coordinate (d) at (1.5,1);
\coordinate (e) at (0,1);
\foreach \X in {a,...,e}
{\fill (\X) circle (0.6pt);}
\draw (a) to[out=-90,in=-90] (b)--(c)--(d)--(e)-- cycle;
\draw[blue] (a) to[out=-60,in=-120] (b);
\draw[red] (a) to[out=-30,in=-150] (b);
\end{tikzpicture}
\end{document}

Just for fun, no competitor of the answers to this question. You can use any smooth plot through the coordinates and draw a contour around them. If the contour is very sharp, you may need to decrease contour step
.
\documentclass[tikz,border=7pt]{standalone}
\usetikzlibrary{decorations,decorations.markings}
\pgfkeys{/tikz/.cd,
contour distance/.store in=\ContourDistance,
contour distance=-10pt, % for the other orientation use a +
contour step/.store in=\ContourStep,
contour step=1pt,
}
\pgfdeclaredecoration{closed contour}{initial}
{%
\state{initial}[width=\ContourStep,next state=cont] {
\pgfmoveto{\pgfpoint{\ContourStep}{\ContourDistance}}
\pgfcoordinate{first}{\pgfpoint{\ContourStep}{\ContourDistance}}
\pgfpathlineto{\pgfpoint{0.3\pgflinewidth}{\ContourDistance}}
\pgfcoordinate{lastup}{\pgfpoint{1pt}{\ContourDistance}}
\xdef\marmotarrowstart{0}
}
\state{cont}[width=\ContourStep]{
\pgfmoveto{\pgfpointanchor{lastup}{center}}
\pgfpathlineto{\pgfpoint{\ContourStep}{\ContourDistance}}
\pgfcoordinate{lastup}{\pgfpoint{\ContourStep}{\ContourDistance}}
}
\state{final}[width=\ContourStep]
{ % perhaps unnecessary but doesn't hurt either
\pgfmoveto{\pgfpointanchor{lastup}{center}}
\pgfpathlineto{\pgfpointanchor{first}{center}}
}
}
\begin{document}
\begin{tikzpicture}
\draw[decoration={closed contour},decorate] plot[smooth cycle] coordinates {(0,0) (2,0) (3,1) (0,2)};
\draw plot[smooth cycle,mark=*] coordinates {(0,0) (2,0) (3,1) (0,2)};
\end{tikzpicture}
\begin{tikzpicture}
\draw[decoration={closed contour},decorate] plot[smooth cycle,tension=1.5] coordinates {(0,0) (2,0) (3,1) (0,2)};
\draw plot[smooth cycle,mark=*,tension=1.5] coordinates {(0,0) (2,0) (3,1) (0,2)};
\end{tikzpicture}
\begin{tikzpicture}
\draw[decoration={closed contour},decorate] plot[smooth cycle,tension=0.5] coordinates {(0,0) (2,0) (3,1) (0,2)};
\draw plot[smooth cycle,mark=*,tension=0.5] coordinates {(0,0) (2,0) (3,1) (0,2)};
\end{tikzpicture}
\end{document}

A SECOND METHOD: Based on this answer. I don't know what the real life applications are like, but if this turns out to useful, I'll be happy to make it more user friendly.
\documentclass[margin=3.14mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,decorations.pathreplacing,decorations.pathmorphing}
\makeatletter
% to produce automaticaly homothetic paths from https://tex.stackexchange.com/a/72753/121799
\newcounter{homothetypoints} % number of vertices of path
\tikzset{
% homothety is a family...
homothety/.style={homothety/.cd,#1},
% ...with some keys
homothety={
% parameters
scale/.store in=\homothety@scale,% scale of current homothetic transformation
center/.store in=\homothety@center,% center of current homothetic transformation
name/.store in=\homothety@name,% prefix for named vertices
% default values
scale=1,
center={0,0},
name=homothety,
% initialization
init memoize homothetic path/.code={
\xdef#1{}
\setcounter{homothetypoints}{0}
},
% incrementation
++/.code={\addtocounter{homothetypoints}{1}},
% a style to store an homothetic transformation of current path into #1 macro
store in/.style={
init memoize homothetic path=#1,
/tikz/postaction={
decorate,
decoration={
show path construction,
moveto code={
% apply homothetic transformation to this segment and add result to #1
\xdef#1{#1 ($(\homothety@center)!\homothety@scale!(\tikzinputsegmentfirst)$)}
% name this vertex
\coordinate[homothety/++](\homothety@name-\arabic{homothetypoints})
at ($(\homothety@center)!\homothety@scale!(\tikzinputsegmentfirst)$);
},
lineto code={
% apply homothetic transformation to this segment and add result to #1
\xdef#1{#1 -- ($(\homothety@center)!\homothety@scale!(\tikzinputsegmentlast)$)}
% name this vertex
\coordinate[homothety/++] (\homothety@name-\arabic{homothetypoints})
at ($(\homothety@center)!\homothety@scale!(\tikzinputsegmentlast)$);
},
curveto code={
% apply homothetic transformation to this segment and add result to #1
\xdef#1{#1
.. controls ($(\homothety@center)!\homothety@scale!(\tikzinputsegmentsupporta)$)
and ($(\homothety@center)!\homothety@scale!(\tikzinputsegmentsupportb)$)
.. ($(\homothety@center)!\homothety@scale!(\tikzinputsegmentlast)$)}
% name this vertex
\coordinate[homothety/++] (\homothety@name-\arabic{homothetypoints})
at ($(\homothety@center)!\homothety@scale!(\tikzinputsegmentlast)$);
},
closepath code={
% apply homothetic transformation to this segment and add result to #1
\xdef#1{#1 -- cycle ($(\homothety@center)!\homothety@scale!(\tikzinputsegmentlast)$)}
},
},
},
},
store coordinates in/.style={
init memoize homothetic path=#1,
/tikz/postaction={
decorate,
decoration={
show path construction,
moveto code={
% apply homothetic transformation to this segment and add result to #1
\xdef#1{#1 ($(\homothety@center)!\homothety@scale!(\tikzinputsegmentfirst)$)}
% name this vertex
\coordinate[homothety/++](\homothety@name-\arabic{homothetypoints})
at ($(\homothety@center)!\homothety@scale!(\tikzinputsegmentfirst)$);
},
lineto code={
% apply homothetic transformation to this segment and add result to #1
\xdef#1{#1 ($(\homothety@center)!\homothety@scale!(\tikzinputsegmentlast)$)}
% name this vertex
\coordinate[homothety/++] (\homothety@name-\arabic{homothetypoints})
at ($(\homothety@center)!\homothety@scale!(\tikzinputsegmentlast)$);
},
curveto code={
% apply homothetic transformation to this segment and add result to #1
\xdef#1{#1 ($(\homothety@center)!\homothety@scale!(\tikzinputsegmentlast)$)}
% name this vertex
\coordinate[homothety/++] (\homothety@name-\arabic{homothetypoints})
at ($(\homothety@center)!\homothety@scale!(\tikzinputsegmentlast)$);
},
closepath code={
% apply homothetic transformation to this segment and add result to #1
\xdef#1{#1 }
},
},
},
},
},
}
\makeatother
\begin{document}
\begin{tikzpicture}[font=\bfseries\sffamily]
% some styles
% draw a path (and memomize its definition into \mypath with points named A-1, A-2,...)
\draw[homothety={store in=\mypath,name=A}]
plot[mark=*] coordinates {(0,0) (2,0) (3,1) (0,2)} -- cycle;
% compute the barycentric coordinate (can be automatized)
\coordinate (A-center) at (barycentric cs:A-1=0.25,A-2=0.25,A-3=0.25,A-4=0.25);
% compute the homothetic hull
\path[homothety={store coordinates in=\secondpath,scale=1.2,center=A-center}] \mypath;
% draw a smooth version of the hull
\draw[blue] plot [smooth cycle] coordinates {\secondpath};
\end{tikzpicture}
\end{document}

hobby
? This seems what thehobby
package is designed to do. It certainly allows you to do 1 and 2.\draw[ultra thick, red, use Hobby shortcut] ([out angle=180]e) .. (a)..(b)..([in angle=0]c) -- (d) -- (e);
in your code fit what you're looking for?